implement categories
fixed conflicts