Lots of changes, working build but need to work more on readability
Cleaned up interface.