refactor validations a little
move models into separate files
add position specs