define your own. You can also easily have several tag fields per object or
have different tag "namespaces" to be used between one, some, or all your
taggable objects. Your project, your choice.
Sane**: No GenericForeignKey madness.
+- ****: No GenericForeignKey madness.
- **Easy**: Uses `Django Model Inheritance with abstract classes`_
to define your own models. The API isn't "magical".
- **Clean**: Testable and well tested code base. Code/branch test coverage