rearrange code a little bit
continue refactoring the code
continue to refactor the code