factoring classes into builders not extension