domain + interface + impl(Category)