refactor working, tests pass.. let's make sure the model is right before merging