diff --git a/src/content.ts b/src/content.ts
index 0843f2c..24a1cd1 100644
--- a/src/content.ts
+++ b/src/content.ts
@@ -1,5 +1,6 @@
 import { TwitterHider } from './hider';
 import { Preferences } from './interfaces/preferences';
+import { PreferencesRepository } from './preferences-repository';
 
 class Background {
 	static async init(): Promise<void> {
@@ -7,43 +8,18 @@ class Background {
 			await this.setup();
 		}
 
-		this.listen();
-	}
-
-	static async listen(): Promise<void> {
-		const preferences: Preferences = await this.getSavedPreferences();
+		const preferences: Preferences = await PreferencesRepository.get();
 		const hider = new TwitterHider(preferences);
 
 		hider.init();
 	}
 
-	static setup(): Promise<void> {
-		const defaults = {
-			hideLikes: true,
-			hideRetweets: true,
-			hideReplies: true,
-			setup: true
-		};
-
-		return new Promise(resolve => {
-			globalThis.chrome.storage.local.set(defaults, () => resolve());
-		});
+	private static async setup(): Promise<void> {
+		await PreferencesRepository.set(PreferencesRepository.DefaultPreferences);
 	}
 
-	static checkIfFirstStart(): Promise<boolean> {
-		return new Promise(resolve => {
-			globalThis.chrome.storage.local.get('setup', data => {
-				resolve(!data.setup);
-			});
-		});
-	}
-
-	static getSavedPreferences(): Promise<Preferences> {
-		return new Promise(resolve => {
-			globalThis.chrome.storage.local.get(['hideLikes', 'hideReplies', 'hideRetweets'], (data: Preferences) => {
-				resolve(data);
-			});
-		})
+	private static async checkIfFirstStart(): Promise<boolean> {
+		return !(await PreferencesRepository.get());
 	}
 }
 
diff --git a/src/popup.html b/src/popup.html
index 2882288..6d5222c 100644
--- a/src/popup.html
+++ b/src/popup.html
@@ -26,6 +26,11 @@
 				<label for="hideretweets">Hide re-tweets?</label>
 				<input type="checkbox" name="hideretweets" id="hideRetweets">
 			</div>
+
+			<div class="row">
+				<label for="hideretweets">Hide follower counts?</label>
+				<input type="checkbox" name="hidefollowers" id="hideFollowers">
+			</div>
 			
 			<div class="row" id="savedChanges" style="display: none">
 				<span style="color: green">Your changes have been saved. You must refresh your page before they take effect.</span>
diff --git a/src/popup.js b/src/popup.ts
similarity index 100%
rename from src/popup.js
rename to src/popup.ts
diff --git a/src/preferences-repository.ts b/src/preferences-repository.ts
new file mode 100644
index 0000000..98c47a5
--- /dev/null
+++ b/src/preferences-repository.ts
@@ -0,0 +1,22 @@
+import { Preferences } from './interfaces/preferences';
+
+export class PreferencesRepository {
+	static readonly DefaultPreferences: Preferences = {
+		hideLikes: true,
+		hideRetweets: true,
+		hideReplies: true
+	};
+
+	static get(): Promise<Preferences> {
+		const propertyNames: string[] = Object.keys(this.DefaultPreferences);
+		return new Promise(resolve => {
+			globalThis.chrome.storage.local.get(propertyNames, (data: Preferences) => resolve(data))
+		});
+	}
+
+	static set(preferences: Preferences): Promise<void> {
+		return new Promise(resolve => {
+			globalThis.chrome.storage.local.set(preferences, () => resolve());
+		});
+	}
+}
\ No newline at end of file