clean + refactor