Broke down create() into smaller helper methods.