@Override
	public void run() {
		options.status = "Take ingots";

		if (ctx.skillingInterface.isProductionInterfaceOpen()) {
			ctx.skillingInterface.cancelProduction();
			return;
		}

		if (ctx.skillingInterface.opened()) {
			if (ctx.skillingInterface.getAction().equals("Take")) {
				if (ctx.skillingInterface.select(0, options.getIngotId())) {
					if (ctx.skillingInterface.start()) {
						Condition.wait(new Callable<Boolean>() {
							@Override
							public Boolean call() throws Exception {
								return !ctx.backpack.select().id(options.getIngotId()).isEmpty();
							}
						});
					}
					return;
				}
			} else {
				ctx.skillingInterface.close();
				return;
			}
		}

		for (final GameObject trough : ctx.objects.first()) {
			if (ctx.camera.prepare(trough) && trough.interact("Take-ingots", trough.name())) {
				Condition.wait(new Callable<Boolean>() {
					@Override
					public Boolean call() throws Exception {
						return trough.tile().distanceTo(ctx.players.local()) < 3;
					}
				});
				Condition.wait(new Callable<Boolean>() {
					@Override
					public Boolean call() throws Exception {
						return ctx.skillingInterface.opened();
					}
				});
				Condition.sleep(333);
			} else if (ctx.movement.step(trough)) {
				Condition.sleep(888);
			}
		}
	}