category accepts optional rules in constructor