Ack, of course.  I hadn't realised what this was doing before, but now I think we should hide the implementation a little better - perhaps a type parameter that takes known constants (bmc/nic) and instantiates the correct class?  Then we can leave the mass-assignment protection in place, and prevent users creating records of any type they wish.