shift implemented