refactor and rename