added skip function to provide consistent error messages and error counting
shifting strategy is now consistent and more readable