introduce ParamType and Param, to get more type safety and better possibilities for comparison in rules