use category instead of inheritance