added functional left shifting