more refactoring and marking progress here http://plomaproject.tumblr.com/post/91103820820/after-refactor-and-simplification