Cleaned up a lot of code and added comments