add self upgrade