replacing distributing factory with a custom component creation function in order to scale