universal refactor