improve GenericBuilder