implemented shift