<!-- Please only use this template for submitting reports about failing tests in iotex-core CI jobs --> ### Description of the code refactor ### Why is this needed - [] better/less memory usage - [] reduce running time - [] clean (easy-to-understand) data structure or algorithm - [] remove dead code - [x] better code design or structure (like reduce complexity) - [x] reduce/decouple dependencies between code modules - [] increase test coverage - [x] better code readability