Sorry for the double post but I felt it was somewhat warranted...
Ok, I've reviewed your programming on this ls612 and its really not badly done at all. You did a lot right. The programming appears rather solid to me. (You overlooked any AI and text display on them though... two very critical steps.)
However, given that we have the goal of giving differing unit types (differences in animal assistance so to speak) differing base abilities on these, allow me to tweak to show you how you'd set it up like that.
But I must admit, you did well at generating a mechanism that bypasses the need for a base unit defining tag at all. And I can understand why you may have felt intimidated by this second step - because you're working with an array and arrays are kinda freaky at first, particularly trying to blend their values in elsewhere.
I'm in the process of generating some unit tags myself today so it harmonizes well with what I'm doing. Once committed you'll be able to see the adjusted method.
EDIT: Hey... um... where's the tags in the Unitschema(s)? I looked in the main schema and couldn't find them nor in yours under your promotions module. Have you used the tags anywhere yet?