'update/return info stored in this object
data can be passwd as dict(s) or keyword args'

def info(self, *args, **kwargs):

    args = (list(args) + [kwargs])
    for a in args:
        for (k, v) in a.iteritems():
            if (k not in self.info_keys):
                self.info_keys.append(k)
            self.__dict__[k] = v
    return dict(((k, self.__dict__[k]) for k in self.info_keys))
