move ActiveModel quacking into it's own module