Should be agnostic toward ActiveRecord; use ActiveModel where appropriate