thru 9, unrefactored, working on 10