refactor default precedence