refactor & clean