self modify