This smells like a really kinda hacky way to go about things. Gut says we should just have this be a part of some list or something.    Also why do you need to do istypes? this is basically is (type in list(objects)) right? couldn't you just maintain a list of purchased typepaths?