refactor + new control exception