Added all of the features I planned for

(May still be some bugs)