move new_from_request to a role and use it everywhere