before refactor
after refactor