Functionally finished!  It could be cleaner though!