diff --git a/public/icons/file-plus.svg b/public/icons/file-plus.svg
new file mode 100644
index 0000000..c9a0fdb
--- /dev/null
+++ b/public/icons/file-plus.svg
@@ -0,0 +1,9 @@
+
+
+
diff --git a/public/icons/list.svg b/public/icons/list.svg
new file mode 100644
index 0000000..9da4f57
--- /dev/null
+++ b/public/icons/list.svg
@@ -0,0 +1,11 @@
+
+
+
diff --git a/src/components/Page/Page.tsx b/src/components/Page/Page.tsx
index a0c01f6..37c7257 100644
--- a/src/components/Page/Page.tsx
+++ b/src/components/Page/Page.tsx
@@ -6,7 +6,10 @@ import {
   ExpressionSetListView,
 } from "../../views";
 import { AddExpressionView } from "../../views/AddExpressionView";
+import { ExpressionCardListView } from "../../views/ExpressionCardListView";
+import { ExpressionCardView } from "../../views/ExpressionCardView";
 import { HomeView } from "../../views/HomeView";
+import { SettingsView } from "../../views/SettingsView";
 
 export function Page() {
   const { route } = useContext(AppRouting);
@@ -22,7 +25,12 @@ export function Page() {
     case AppPath.ExpressionSetsPractice:
       return ;
     case AppPath.Settings:
-      // TODO this should split onto more views
+      return ;
+    case AppPath.CreateCards:
       return ;
+    case AppPath.CardsList:
+      return ;
+    case AppPath.CardView:
+      return ;
   }
 }
diff --git a/src/components/SettingsSection/SettingsSectionLink.tsx b/src/components/SettingsSection/SettingsSectionLink.tsx
new file mode 100644
index 0000000..9bff87d
--- /dev/null
+++ b/src/components/SettingsSection/SettingsSectionLink.tsx
@@ -0,0 +1,26 @@
+import { useContext } from "react";
+import { AppPath, AppRouting } from "../../model/routing";
+
+export interface SettingsSectionLinkProps {
+  text: string;
+  iconUrl?: string;
+  page: AppPath;
+}
+
+export function SettingsSectionLink({
+  text,
+  iconUrl,
+  page,
+}: SettingsSectionLinkProps) {
+  const { setRoute } = useContext(AppRouting);
+  return (
+    
 setRoute({ path: page })}>
+      
+        
+          {iconUrl && 

}
+          
{text}
+        
+      
+      
+        {expression_list.map(({ prompt, id, description }) => (
+          - 
+              setRoute({
+                path: AppPath.CardView,
+                options: { expression_card_id: id },
+              })
+            }
+          >
+            
+          +        ))}
+
+    
+      }
+        show_description
+      />
+    
+  );
+}
diff --git a/src/views/ExpressionCardView/index.ts b/src/views/ExpressionCardView/index.ts
new file mode 100644
index 0000000..afd407e
--- /dev/null
+++ b/src/views/ExpressionCardView/index.ts
@@ -0,0 +1 @@
+export * from "./ExpressionCardView";
diff --git a/src/views/SettingsView/SettingsView.tsx b/src/views/SettingsView/SettingsView.tsx
new file mode 100644
index 0000000..40e3afb
--- /dev/null
+++ b/src/views/SettingsView/SettingsView.tsx
@@ -0,0 +1,21 @@
+import { SettingsSectionLink } from "../../components/SettingsSection";
+import { AppPath } from "../../model/routing";
+
+export function SettingsView() {
+  return (
+    
+  );
+}
diff --git a/src/views/SettingsView/index.ts b/src/views/SettingsView/index.ts
new file mode 100644
index 0000000..eb34623
--- /dev/null
+++ b/src/views/SettingsView/index.ts
@@ -0,0 +1 @@
+export * from "./SettingsView";