abstracted lots of new functions
typo