added shake function