diff --git a/src/pages/SettingsPage/GeneralSettings.js b/src/pages/SettingsPage/GeneralSettings.js
new file mode 100644
index 0000000..e33d38f
--- /dev/null
+++ b/src/pages/SettingsPage/GeneralSettings.js
@@ -0,0 +1,19 @@
+import React from "react";
+
+class GeneralSettings extends React.Component {
+    constructor(props) {
+        super(props);
+
+        this.state = {};
+    }
+
+    render() {
+        return (
+            <>
+                Generalsettings here
+            >
+        );
+    }
+}
+
+export default GeneralSettings;
\ No newline at end of file
diff --git a/src/pages/SettingsPage/GeneralSettings.test.js b/src/pages/SettingsPage/GeneralSettings.test.js
new file mode 100644
index 0000000..88d2f6a
--- /dev/null
+++ b/src/pages/SettingsPage/GeneralSettings.test.js
@@ -0,0 +1,20 @@
+import {shallow} from "enzyme";
+import React from "react";
+import GeneralSettings from "./GeneralSettings";
+
+function prepareFetchApi(response) {
+    const mockJsonPromise = Promise.resolve(response);
+    const mockFetchPromise = Promise.resolve({
+        json: () => mockJsonPromise,
+    });
+    return (jest.fn().mockImplementation(() => mockFetchPromise));
+}
+
+describe('', function () {
+    it('renders without crashing ', function () {
+        const wrapper = shallow();
+        wrapper.unmount();
+    });
+
+    
+});
diff --git a/src/pages/SettingsPage/MovieSettings.js b/src/pages/SettingsPage/MovieSettings.js
new file mode 100644
index 0000000..5ff54aa
--- /dev/null
+++ b/src/pages/SettingsPage/MovieSettings.js
@@ -0,0 +1,77 @@
+import React from "react";
+
+class MovieSettings extends React.Component {
+    constructor(props) {
+        super(props);
+
+        this.state = {
+            text: []
+        };
+    }
+
+    componentDidMount() {
+        if (this.myinterval) {
+            clearInterval(this.myinterval);
+        }
+        this.myinterval = setInterval(this.updateStatus, 1000);
+    }
+
+    componentWillUnmount() {
+        clearInterval(this.myinterval);
+    }
+
+    render() {
+        return (
+            <>
+                
+                
{this.state.text.map(m => (
+                    
{m}
+                ))}
 
+            >
+        );
+    }
+
+    startReindex() {
+        console.log("starting");
+        const updateRequest = new FormData();
+        // fetch all videos available
+        fetch('/api/extractvideopreviews.php', {method: 'POST', body: updateRequest})
+            .then((response) => response.json()
+                .then((result) => {
+                    console.log("returned");
+                }))
+            .catch(() => {
+                console.log("no connection to backend");
+            });
+        if (this.myinterval) {
+            clearInterval(this.myinterval);
+        }
+        this.myinterval = setInterval(this.updateStatus, 1000);
+        console.log("sent");
+    }
+
+    updateStatus = () => {
+        const updateRequest = new FormData();
+        fetch('/api/extractionData.php', {method: 'POST', body: updateRequest})
+            .then((response) => response.json()
+                .then((result) => {
+                    if (result.contentAvailable === true) {
+                        console.log(result);
+                        this.setState({
+                            text: [...result.message.split("\n"),
+                                ...this.state.text]
+                        });
+                    } else {
+                        clearInterval(this.myinterval);
+                    }
+                }))
+            .catch(() => {
+                console.log("no connection to backend");
+            });
+    };
+}
+
+export default MovieSettings;
\ No newline at end of file
diff --git a/src/pages/SettingsPage/MovieSettings.test.js b/src/pages/SettingsPage/MovieSettings.test.js
new file mode 100644
index 0000000..61d7821
--- /dev/null
+++ b/src/pages/SettingsPage/MovieSettings.test.js
@@ -0,0 +1,20 @@
+import {shallow} from "enzyme";
+import React from "react";
+import MovieSettings from "./MovieSettings";
+
+function prepareFetchApi(response) {
+    const mockJsonPromise = Promise.resolve(response);
+    const mockFetchPromise = Promise.resolve({
+        json: () => mockJsonPromise,
+    });
+    return (jest.fn().mockImplementation(() => mockFetchPromise));
+}
+
+describe('', function () {
+    it('renders without crashing ', function () {
+        const wrapper = shallow();
+        wrapper.unmount();
+    });
+
+
+});
diff --git a/src/pages/SettingsPage/SettingsPage.css b/src/pages/SettingsPage/SettingsPage.css
new file mode 100644
index 0000000..216e5e2
--- /dev/null
+++ b/src/pages/SettingsPage/SettingsPage.css
@@ -0,0 +1,39 @@
+.SettingsSidebar {
+    padding-top: 20px;
+    float: left;
+    width: 10%;
+    background-color: #d3dcef;
+    min-height: calc(100vh - 56px);
+    min-width: 110px;
+}
+
+.SettingsSidebarTitle {
+    text-align: center;
+    font-weight: bold;
+    text-transform: uppercase;
+    font-size: larger;
+    margin-bottom: 25px;
+}
+
+.SettingsContent {
+    float: left;
+    width: 80%;
+    padding-left: 30px;
+    padding-top: 30px;
+}
+
+.SettingSidebarElement {
+    margin: 10px 5px 5px;
+    padding: 5px;
+    background-color: #a8b2de;
+    text-align: center;
+    font-weight: bold;
+}
+
+.SettingSidebarElement:hover {
+    font-weight: bolder;
+    background-color: #7d8dd4;
+    box-shadow: #7d8dd4 0 0 0 5px;
+    transition: all 300ms;
+    cursor: pointer;
+}
\ No newline at end of file
diff --git a/src/pages/SettingsPage/SettingsPage.js b/src/pages/SettingsPage/SettingsPage.js
index 776dae8..44aa747 100644
--- a/src/pages/SettingsPage/SettingsPage.js
+++ b/src/pages/SettingsPage/SettingsPage.js
@@ -1,82 +1,50 @@
 import React from "react";
-import PageTitle from "../../elements/PageTitle/PageTitle";
+import MovieSettings from "./MovieSettings";
+import GeneralSettings from "./GeneralSettings";
+import "./SettingsPage.css"
 
 
 class SettingsPage extends React.Component {
     constructor(props, context) {
         super(props, context);
+
         this.state = {
-            text: []
+            currentpage: "general"
         };
     }
 
-    updateStatus = () => {
-        const updateRequest = new FormData();
-        fetch('/api/extractionData.php', {method: 'POST', body: updateRequest})
-            .then((response) => response.json()
-                .then((result) => {
-                    if (result.contentAvailable === true) {
-                        console.log(result);
-                        this.setState({
-                            text: [...result.message.split("\n"),
-                                ...this.state.text]
-                        });
-                    } else {
-                        clearInterval(this.myinterval);
-                    }
-                }))
-            .catch(() => {
-                console.log("no connection to backend");
-            });
-    };
-
-    componentDidMount() {
-        if (this.myinterval) {
-            clearInterval(this.myinterval);
+    getContent() {
+        switch (this.state.currentpage) {
+            case "general":
+                return ;
+            case "movies":
+                return ;
+            default:
+                return "unknown button clicked";
         }
-        this.myinterval = setInterval(this.updateStatus, 1000);
-    }
-
-    componentWillUnmount() {
-        clearInterval(this.myinterval);
     }
 
     render() {
         return (
             
-                
-
-                
-                
{this.state.text.map(m => (
-                    
{m}
-                ))}
+                
+                    
Settings
+                    
 this.setState({currentpage: "general"})}
+                         className='SettingSidebarElement'>General
+                    
+                    
 this.setState({currentpage: "movies"})}
+                         className='SettingSidebarElement'>Movies
+                    
+                    
 this.setState({currentpage: "tv"})}
+                         className='SettingSidebarElement'>TV Shows
+                    
+                
+                
+                    {this.getContent()}
+                
              
         );
     }
-
-    startReindex() {
-        console.log("starting");
-        const updateRequest = new FormData();
-        // fetch all videos available
-        fetch('/api/extractvideopreviews.php', {method: 'POST', body: updateRequest})
-            .then((response) => response.json()
-                .then((result) => {
-                    console.log("returned");
-                }))
-            .catch(() => {
-                console.log("no connection to backend");
-            });
-        if (this.myinterval) {
-            clearInterval(this.myinterval);
-        }
-        this.myinterval = setInterval(this.updateStatus, 1000);
-        console.log("sent");
-    }
 }
 
 export default SettingsPage;