implement self-satisfaction