defining more move types and restrictions