refactor & clean-up