refactor and bang
refactor