TODO
----
Code cleanup and separation of different classes into individual files.

