I'd probably use ActiveSupport::Concern for this