better code, allows removing the default rule