Yeah, this looks awfully tedious and really shouldn't be used for objects found in commercial settings.  Let's get @i2amroy's implementation more broadly in place, please.