added shifting mechanism