use shoulda ~> 2.0 so we don't depend on activesupport