public void moveItemById(int itemId, BagLocation targetBag, int targetItemSlot) throws IOException {
        this.prepareMoveItem(itemId);
        try {
            //TODO: explain why this sleep is needed
            Thread.sleep(20);
        } catch (InterruptedException ex) {
            // ignore
        }

        this.moveItem(targetBag, targetItemSlot);
    }