diff --git a/main.py b/main.py
index 293827203d5384be609ab45c49c99dcef3e920d2..a92bdc7b4c4337ea69bae7107aabfdd170fc3de7 100644
--- a/main.py
+++ b/main.py
@@ -5,7 +5,7 @@ Assignment: Fractional Knapsack Problem
 Author: Brandon Rodriguez
 
 
-<File Description Here>
+Start of Fractional Knapsack Program.
 """
 
 # System Imports.
@@ -13,14 +13,14 @@ Author: Brandon Rodriguez
 
 # User Class Imports.
 from resources import logging as init_logging
-
+from resources.interface import UserInterface
 
 # Initialize Logger.
 logger = init_logging.get_logger(__name__)
 
 
-def test():
-    logger.info('Testing from main.py.')
-
-
-test()
+if __name__ == '__main__':
+    logger.info('Starting program.')
+    interface = UserInterface()
+    interface.user_interface_loop()
+    logger.info('Terminating program.')
diff --git a/resources/interface.py b/resources/interface.py
new file mode 100644
index 0000000000000000000000000000000000000000..e4e96fb10bf6517316f8c262c7e1f74fde7df4ef
--- /dev/null
+++ b/resources/interface.py
@@ -0,0 +1,157 @@
+"""
+Date: 09-20-19
+Class: CS5310
+Assignment: Fractional Knapsack Problem
+Author: Brandon Rodriguez
+
+
+User interface for program.
+"""
+
+# System Imports.
+
+
+# User Class Imports.
+from resources import logging as init_logging
+from resources.knapsack import FractionalKnapsackAlgorithm
+
+
+# Initialize Logger.
+logger = init_logging.get_logger(__name__)
+
+
+class UserInterface():
+    def __init__(self):
+        self._run_program_bool_ = True
+        self._knapsack_algorithm = FractionalKnapsackAlgorithm()
+
+    def user_interface_loop(self):
+        """
+        Basically the program start/root. Runs a loop until user exits.
+        """
+        # Loop until user decides to exit program.
+        while self._run_program_bool_:
+            self.display_main_menu()
+
+            # Get user's input.
+            user_input = input()
+            print('')
+
+            # Handle based on input.
+            if user_input == '1':
+                self.set_program_values_menu()
+                print('')
+            elif user_input == '2':
+                self.display_program_values()
+                print('')
+            elif user_input == '3':
+                self.solve_knapsack_problem()
+                print('')
+            elif user_input == '4':
+                self._run_program_bool_ = False
+                print('Exiting Program')
+                print('')
+            else:
+                print('Unrecognized user input. Please try again.')
+
+    def display_main_menu(self):
+        """
+        Displays "Main Menu" to user.
+        """
+        print('')
+        print('MAIN MENU')
+        print('Select an option:')
+        print('   1) Set program values.')
+        print('   2) Display current program values.')
+        print('   3) Solve Knapsack Problem with current program values.')
+        print('   4) Exit program.')
+        print('')
+
+    #region Program Values Menu
+
+    def set_program_values_menu(self):
+        """
+        Display "set program values" menu to user.
+        """
+        # Stay in menu until user manually leaves.
+        stay_in_menu = True
+        while stay_in_menu:
+            self.display_set_program_values_menu()
+
+            # Get user's input.
+            user_input = input()
+            print('')
+
+            # Handle based on input.
+            if user_input == '1':
+                self.set_max_weight()
+                print('')
+            elif user_input == '2':
+                self.clear_max_weight()
+                print('')
+            elif user_input == '3':
+                self.set_item_set_by_json()
+                print('')
+            elif user_input == '4':
+                self.add_to_item_Set()
+                print('')
+            elif user_input == '5':
+                self.clear_item_set()
+                print('')
+            elif user_input == '6':
+                stay_in_menu = False
+                print('')
+            else:
+                print('Unrecognized user input. Please try again.')
+
+    def display_set_program_values_menu(self):
+        """
+        Displays "Set Program Values" menu to user.
+        """
+        print('')
+        print('PROGRAM VALUES MENU')
+        print('Select an option:')
+        print('   1) Set "Max Weight" value.')
+        print('   2) Clear "Max Weight" value.')
+        print('   3) Set "Item Set" by JSON import.')
+        print('   4) Add value to "Item Set" manually.')
+        print('   5) Clear entire "Item Set".')
+        print('   6) Back')
+        print('')
+
+    def set_max_weight(self):
+        """
+        Sets "Max Weight" value for program.
+        """
+
+    def clear_max_weight(self):
+        """
+        Resets "Max Weight" value for program to 0.
+        """
+
+    def set_item_set_by_json(self):
+        """
+        Sets "Item Set" value by importing from JSON file.
+        """
+
+    def add_to_item_Set(self):
+        """
+        Adds new "Item" to "Item Set" by manual input.
+        """
+
+    def clear_item_set(self):
+        """
+        Removes all items from item set.
+        """
+
+    #endregion Program Values Menu
+
+    def display_program_values(self):
+        """
+        Displays program values for user.
+        """
+
+    def solve_knapsack_problem(self):
+        """
+        Solves knapsack with current problems and displays result to user.
+        """
diff --git a/resources/knapsack.py b/resources/knapsack.py
index 9b06b194de3225ec73cd1722a37a8891ba966e69..123b23192c8b92bffc3f85e4ca5e48484750510d 100644
--- a/resources/knapsack.py
+++ b/resources/knapsack.py
@@ -20,7 +20,7 @@ from resources import logging as init_logging
 logger = init_logging.get_logger(__name__)
 
 
-class Knapsack():
+class FractionalKnapsackAlgorithm():
     """
     Knapsack algorithm.
     """
@@ -70,6 +70,18 @@ class Knapsack():
         self._max_weight_ = max_weight
         self._weight_populated_ = True
 
+    def display_item_set(self):
+        """
+        Prints current item set with logging.
+        """
+        logger.info('Current Item Set: {0}'.format(self._item_set_))
+
+    def display_max_weight(self):
+        """
+        Prints current max weight with logging.
+        """
+        logger.info('Current Max Weight: {0}'.format(self._max_weight_))
+
     def calculate_fractional_knapsack(self):
         """
         Calculates optimal choices for fractional knapsack problem.
diff --git a/tests/resources/knapsack.py b/tests/resources/knapsack.py
index e9122752173894054ddccfe5eaf34e772d73daf7..6455b70b4314344a1d6d9809e891e3fdd329bc5f 100644
--- a/tests/resources/knapsack.py
+++ b/tests/resources/knapsack.py
@@ -12,12 +12,12 @@ Tests for knapsack.py.
 import unittest
 
 # User Class Imports.
-from resources.knapsack import Knapsack
+from resources.knapsack import FractionalKnapsackAlgorithm
 
 
 class TestKnapsack(unittest.TestCase):
     def setUp(self):
-        self.knapsack = Knapsack()
+        self.knapsack = FractionalKnapsackAlgorithm()
 
         self.item_set_1 = [
             {
@@ -58,7 +58,7 @@ class TestKnapsack(unittest.TestCase):
         ]
 
     def test_knapsack_creation(self):
-        self.assertTrue(isinstance(self.knapsack, Knapsack))
+        self.assertTrue(isinstance(self.knapsack, FractionalKnapsackAlgorithm))
 
     def test_set_item_set_success(self):
         self.knapsack.set_item_set(self.item_set_1)