diff --git a/src/App.svelte b/src/App.svelte
index 79d873add..e51f0dbfb 100644
--- a/src/App.svelte
+++ b/src/App.svelte
@@ -1,22 +1,25 @@
+
+
+
+
+ theme.set("light")} />
+ {
+ theme.set($theme === "dark" ? "light" : "dark");
+ storeTheme($theme);
+ }} />
+ theme.set("dark")} />
+
diff --git a/src/ThemeToggle.svelte b/src/ThemeToggle.svelte
deleted file mode 100644
index 6cbd6eeb3..000000000
--- a/src/ThemeToggle.svelte
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
- theme.set("light")} />
- {
- theme.set($theme === "dark" ? "light" : "dark");
- storeTheme($theme);
- }} />
- theme.set("dark")} />
-
diff --git a/src/base/orgs/Org.ts b/src/base/orgs/Org.ts
deleted file mode 100644
index 39e85a84c..000000000
--- a/src/base/orgs/Org.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import type { Wallet } from "@app/wallet";
-
-import * as ethers from "ethers";
-
-import * as cache from "@app/cache";
-import * as utils from "@app/utils";
-import { assert } from "@app/error";
-import ethereumContractAbis from "@app/ethereum/contractAbis.json";
-
-export class Org {
- address: string;
- owner: string;
- name?: string | null;
-
- constructor(address: string, owner: string, name?: string | null) {
- assert(ethers.utils.isAddress(address), "address must be valid");
-
- this.address = address.toLowerCase(); // Don't store address checksum.
- this.owner = owner;
- this.name = name;
- }
-
- static async get(addressOrName: string, wallet: Wallet): Promise {
- const org = await getOrgContract(addressOrName, wallet);
-
- try {
- const [owner, resolved] = await resolveOrgOwner(org);
-
- // If what is resolved is not the same as the input, it's because we
- // were given a name.
- if (utils.isAddressEqual(addressOrName, resolved)) {
- return new Org(resolved, owner, null);
- } else {
- return new Org(resolved, owner, addressOrName);
- }
- } catch (e) {
- console.error(e);
- return null;
- }
- }
-}
-
-export const getOrgContract = cache.cached(
- async (addressOrName: string, wallet: Wallet) => {
- return new ethers.Contract(
- addressOrName,
- ethereumContractAbis.org,
- wallet.provider,
- );
- },
- addressOrName => addressOrName,
-);
-
-export const resolveOrgOwner = cache.cached(
- async (org: ethers.Contract) => {
- return await Promise.all([org.owner(), org.resolvedAddress]);
- },
- org => org.address,
-);
diff --git a/src/base/users/User.ts b/src/base/users/User.ts
deleted file mode 100644
index 384bedb27..000000000
--- a/src/base/users/User.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import * as ethers from "ethers";
-import type { Wallet } from "@app/wallet";
-import { assert } from "@app/error";
-import type { TransactionResponse } from "@ethersproject/providers";
-import ethereumContractAbis from "@app/ethereum/contractAbis.json";
-
-export class User {
- address: string;
-
- constructor(address: string) {
- assert(ethers.utils.isAddress(address), "address must be valid");
-
- this.address = address.toLowerCase(); // Don't store address checksum.
- }
-
- async setName(name: string, wallet: Wallet): Promise {
- assert(wallet.signer);
-
- const reverseRegistrar = new ethers.Contract(
- wallet.reverseRegistrar.address,
- ethereumContractAbis.reverseRegistrar,
- wallet.signer,
- );
- return reverseRegistrar.setName(name);
- }
-}
diff --git a/src/Address.svelte b/src/components/Address.svelte
similarity index 91%
rename from src/Address.svelte
rename to src/components/Address.svelte
index acaceb22f..ac7f4cb3b 100644
--- a/src/Address.svelte
+++ b/src/components/Address.svelte
@@ -1,19 +1,20 @@
diff --git a/src/router/ProjectLink.svelte b/src/components/ProjectLink.svelte
similarity index 66%
rename from src/router/ProjectLink.svelte
rename to src/components/ProjectLink.svelte
index 864d2effc..7f45c7f9a 100644
--- a/src/router/ProjectLink.svelte
+++ b/src/components/ProjectLink.svelte
@@ -1,6 +1,6 @@
diff --git a/src/base/projects/Patch/PatchTabBar.svelte b/src/views/projects/Patch/PatchTabBar.svelte
similarity index 83%
rename from src/base/projects/Patch/PatchTabBar.svelte
rename to src/views/projects/Patch/PatchTabBar.svelte
index 7bbc60592..0a02c27f3 100644
--- a/src/base/projects/Patch/PatchTabBar.svelte
+++ b/src/views/projects/Patch/PatchTabBar.svelte
@@ -1,13 +1,13 @@
diff --git a/src/base/seeds/View.svelte b/src/views/seeds/View.svelte
similarity index 80%
rename from src/base/seeds/View.svelte
rename to src/views/seeds/View.svelte
index 2ab0f11c1..640193694 100644
--- a/src/base/seeds/View.svelte
+++ b/src/views/seeds/View.svelte
@@ -1,16 +1,16 @@