public DrunkardJob addJob(String jobName, EdgeDirection edgeDirection,
                              WalkUpdateFunction<VertexDataType, EdgeDataType> callback,
                              RemoteDrunkardCompanion companion) {

        /* Configure engine parameters */
        switch(edgeDirection) {
            case IN_AND_OUT_EDGES:
                engine.setDisableInedges(false);
                engine.setDisableOutEdges(false);
                break;
            case IN_EDGES:
                engine.setDisableInedges(false);
                break;
            case OUT_EDGES:
                engine.setDisableOutEdges(false);
                break;
        }

        /**
         * Create job object and the driver-object.
         */
        DrunkardJob job = new DrunkardJob(jobName, companion, engine.numVertices(), factory);
        drivers.add(factory.createDrunkardDriver(job, callback));
        return job;
    }