fix factory for 3 args