300: refactor