Finishing cleaning up, using exceptions for errors, finishing out remaining todo's