If two separate datums require the same code to function, they should inherit said code from their common parent. Additional differences in procs can then be defined on the child-level after using ..() to call the parent's verison of the proc. Subtypes of datums should be polymorphic ...