refactor, add modes