[feat] factory intialization can pass settings through void*