Added a ton of functionality
a lot of changes