remove InstancePool, add Factory