diff --git a/bbcli/cli.py b/bbcli/cli.py
index 498d42982aedb9b165c4effe6c1da9fe98264ece..9758cdca370a08cc5811bca9529c3b5c4f0cf4b0 100644
--- a/bbcli/cli.py
+++ b/bbcli/cli.py
@@ -3,7 +3,7 @@ from typing import Optional
 from pkg_resources import EntryPoint
 # import typer
 from bbcli import __app_name__, __version__ 
-from bbcli.endpoints import get_user, get_course_contents, get_assignments, get_contents
+from bbcli.endpoints import get_user, get_course_contents, get_contents
 import os
 from dotenv import load_dotenv
 from bbcli import check_valid_date, check_response
@@ -19,7 +19,6 @@ def entry_point():
 
 entry_point.add_command(get_user)
 entry_point.add_command(get_course_contents)
-entry_point.add_command(get_assignments)
 entry_point.add_command(get_contents)
 
 load_dotenv()
diff --git a/bbcli/controllers/content_controller.py b/bbcli/controllers/content_controller.py
new file mode 100644
index 0000000000000000000000000000000000000000..5afe53f006bfbb5d0fb3dec33c65466c6e663356
--- /dev/null
+++ b/bbcli/controllers/content_controller.py
@@ -0,0 +1,160 @@
+import time
+import requests
+import bbcli.cli as cli
+import click
+
+from anytree import Node as Nd, RenderTree
+
+from bbcli import check_response
+from bbcli.entities.Node import Node
+from bbcli.entities.Node2 import Node2
+from bbcli.utils.URL_builder import URLBuilder
+
+url_builder = URLBuilder()
+
+base_url = 'https://ntnu.blackboard.com/learn/api/public/v1/'
+
+def get_children(session, worklist, url, acc, count: int = 0):
+    count = count + 1
+    key = 'hasChildren'
+    if len(worklist) == 0:
+        return acc 
+    else:
+        node = worklist.pop()
+        id = node.data['id']
+        tmp = url[:url.index('contents') + len('contents')]
+        old = f'{tmp}/{id}/children'
+        response = session.get(old, cookies=cli.cookies)
+        if check_response(response) == False:
+            return acc
+        else:
+            children = response.json()['results']
+            for i in range(len(children)):
+                # TODO: Add list of children instead of bool
+                if key in children[i] and children[i][key] == True:
+                # if children[i]['contentHandler'] == content_types['folder']:
+                    child = Node(children[i], True, node)
+                    worklist.append(child)
+                    acc.append(child)
+                else:
+                    child = Node(children[i], False, node)
+                    acc.append(child)
+            return get_children(session, worklist, url, acc)
+
+def get_children2(session, worklist, url, acc, count: int = 0):
+    count = count + 1
+    key = 'hasChildren'
+    if len(worklist) == 0:
+        return 
+    else:
+        node = worklist.pop()
+        id = node.data['id']
+        tmp = url[:url.index('contents') + len('contents')]
+        old = f'{tmp}/{id}/children'
+        response = session.get(old, cookies=cli.cookies)
+        if check_response(response) == False:
+            return acc
+        else:
+            children = response.json()['results']
+            parent = Node2(node)
+            for i in range(len(children)):
+                # TODO: Add list of children instead of bool
+                if key in children[i] and children[i][key] == True:
+                # if children[i]['contentHandler'] == content_types['folder']:
+                    # child = Node(children[i], True, parent)
+                    child = Node2(children[i])
+                    parent.children.append(child)
+                    worklist.append(child)
+                    # acc.append(child)
+                else:
+                    child = Node2(children[i])
+                    parent.children.append(child)
+                    # child = Node(children[i], False, parent)
+                    # acc.append(child)
+            return get_children(session, worklist, url, acc)
+
+
+@click.command(name='get-contents')
+@click.argument('course_id', default='_27251_1')
+@click.option('--folder-id')
+def get_contents(course_id: str, folder_id=None):
+    '''
+    Get the contents\n
+    Folders are blue and have an id \n
+    Files are white
+    '''
+    session = requests.Session()
+    if folder_id is not None:
+        url = f'{base_url}courses/{course_id}/contents/{folder_id}'
+    else:
+        url = f'{base_url}courses/{course_id}/contents'
+    start = time.time()
+    response = session.get(url, cookies=cli.cookies)
+    if check_response(response) == False:
+        return
+    else:
+        if folder_id is not None:
+            data = response.json()
+            root = Node(data, True)
+            worklist = [root]
+            res = get_children(session, worklist, url, [])
+            create_tree(root, res)
+        else:
+            folders = response.json()['results']
+            root = None
+            for folder in folders:
+                root = Node(folder, True)
+                worklist = [root]
+                get_children(session, worklist, url, [])
+                print(root.data['title'])
+
+            for child in root.children:
+                print(child.data['title'])
+            
+    end = time.time()
+
+    print(f'\ndownload time: {end - start} seconds')
+
+def list_tree(root, contents):
+    for content in contents:
+        parent = Nd(content.parent.data['title'])
+        this = Nd(content.data['title'], parent)
+    
+    for pre, fill, node in RenderTree(root_node):
+        print("%s%s" % (pre, node.name))
+
+def create_tree(root, nodes):
+    parents = []
+    root_node = Nd(root.data['title'])
+    parent = root_node
+    parents.append(parent)
+    folders = dict()
+    folders[root.data['title']] = root.data['id']
+
+    for i in range(len(nodes)):
+        id = nodes[i].data['id']
+        title = nodes[i].data['title']
+        if (nodes[i].has_children):
+            for parent in parents:
+                if (parent.name == nodes[i].parent.data['title']):
+                    node = Nd(title, parent)
+                    folders[title] = id
+                    parents.append(node)
+                    continue
+
+            node = Nd(title, root_node)
+            folders[title] = id
+            parents.append(node)
+
+        else:
+            for parent in parents:
+                if (parent.name == nodes[i].parent.data['title']):
+                    node = Nd(title, parent)
+                    folders[title] = ''
+
+    for pre, fill, node in RenderTree(root_node):
+        folder_id = folders[node.name]
+        if folder_id == '':
+            print("%s%s" % (pre, node.name))
+        else:
+            print(f'{pre}{Fore.BLUE}{folder_id} {node.name} {Style.RESET_ALL}')