refactor to use shoulda-mathcers