Updated many of the code
Added some great functionality