done with first functional iteration, needs refactoring and classes