added shift operation