The beginnings of a more elegant rules machine. I'd like to wrap them in decorators eventually