add randomMove, constraints checking: canEject, canInsert, canMove