Added more categories and abstracted some category management logic