use 'horizontal' and 'vertical' in shifting for less confusion