re-factored a couple things, added a few features. Good rollback point in case I fuck anything else up while doing further refactoring