pushing merging from dxyliang/fuskor refactor changes