add self shift part