moveLankCommand ({
    key,
    resource,
    thang,
    thang: {
      pos
    } = {},
    ms = 1000
  }) {
    // Make sure we can undo the lank by tracing state during command creation.
    if (resource) {
      this.commandParsingState.lanks[key] = { slug: resource, thang }
    }

    if (ms === 0) {
      return new SyncFunction(() => {
        if (resource) {
          this.addLank(key, this.loader.getThangType(resource), thang)
        }

        _.merge(this.lanks[key].thang, {
          pos: thang.pos,
          scaleFactorX: thang.scaleX,
          scaleFactorY: thang.scaleY,
          stateChanged: true
        })
        this.lanks[key].updateScale()
      })
    }

    return new MoveLank(() => {
      if (resource) {
        this.addLank(key, this.loader.getThangType(resource), thang)
      }
      if (!this.lanks[key]) {
        throw new Error('You are using a lank that hasn\'t been created yet, in setup!')
      }
      // normalize parameters
      pos.x = pos.x !== undefined ? pos.x : this.lanks[key].thang.pos.x
      pos.y = pos.y !== undefined ? pos.y : this.lanks[key].thang.pos.y
      if (this.lanks[key].thang.pos.x === pos.x && this.lanks[key].thang.pos.y === pos.y) {
        console.warn('Are you accidentally not moving the Lank?')
      }
      const lankStateChanged = () => { this.lanks[key].thang.stateChanged = true }
      const animation = anime({
        targets: this.lanks[key].thang.pos,
        x: pos.x,
        y: pos.y,
        duration: ms,
        autoplay: false,
        easing: 'easeInOutQuart',
        // Inform update engine to render thang at new position.
        update: lankStateChanged,
        complete: lankStateChanged
      })

      return {
        lankStateChanged,
        animation,
        run: () => new Promise((resolve, reject) => {
          animation.play()
          animation.complete = resolve
        })
      }
    })
  }
Returns a command that will move the lank.
You must provide either a key for an existing lank, or a key and resource
to create a new lank with the given key.
@param {Object} options
@param {string} options.key The key of the lank
@param {string} options.resource The slug or originalId of the thangType
@param {Object} options.thang  Thang object properties
@param {Object} options.ms Time to move lank to position.