change names and params for global factory method. break compatibility