Add categorical() helper