refactor
refactor and relocate