Why can't this be done as part of contribute_to_class()? That is, the value defines contribute_to_class as:
    original_contribute_to_class() # super call or just the code
    self.prepare()
that way no need for new flag.