updated to strategy pattern vs inherited builder