implemented willis shuffle