according to interface comments, move should throw IllegalStateException