Start to refactor code tbc

the protected methods will eventually go into the model!
test update method

i am basically only testing that certain methods get called, not if those methods themselves do the right thing. the methods themselves will be later on tested in the model spec.