improve self-object method