diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/HaaSOutputHolder.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/HaaSOutputHolder.java
index 5c8da0e69ed27d513448e98bb099246daf27d291..c54b0f5c00ecdd9a2497ac0ed36982271189e48d 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/HaaSOutputHolder.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/HaaSOutputHolder.java
@@ -1,27 +1,7 @@
 package cz.it4i.fiji.haas;
 
-import java.util.Arrays;
+public interface HaaSOutputHolder {
 
-import cz.it4i.fiji.haas.JobManager.JobSynchronizableFile;
-import cz.it4i.fiji.haas_java_client.SynchronizableFileType;
+	String getActualOutput();
 
-public class HaaSOutputHolder {
-	private StringBuilder result = new StringBuilder();
-	private HaaSOutputSource source;
-	private SynchronizableFileType type;
-	public HaaSOutputHolder(HaaSOutputSource source, SynchronizableFileType typeForHold) {
-		super();
-		this.source = source;
-		this.type = typeForHold;
-	}
-	
-	public String getActualOutput () {
-		updateData();
-		return result.toString();
-	}
-
-	private void updateData() {
-		JobSynchronizableFile file = new JobSynchronizableFile(type, result.length());
-		result.append(source.getOutput(Arrays.asList(file)).get(0));
-	}
-}
+}
\ No newline at end of file
diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/HaaSOutputHolderImpl.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/HaaSOutputHolderImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2a5b68aab9b4e281678297c6d00f14ed97990fb
--- /dev/null
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/HaaSOutputHolderImpl.java
@@ -0,0 +1,31 @@
+package cz.it4i.fiji.haas;
+
+import java.util.Arrays;
+
+import cz.it4i.fiji.haas.JobManager.JobSynchronizableFile;
+import cz.it4i.fiji.haas_java_client.SynchronizableFileType;
+
+public class HaaSOutputHolderImpl implements HaaSOutputHolder {
+	private StringBuilder result = new StringBuilder();
+	private HaaSOutputSource source;
+	private SynchronizableFileType type;
+	public HaaSOutputHolderImpl(HaaSOutputSource source, SynchronizableFileType typeForHold) {
+		super();
+		this.source = source;
+		this.type = typeForHold;
+	}
+	
+	/* (non-Javadoc)
+	 * @see cz.it4i.fiji.haas.HaaSOutputHolder#getActualOutput()
+	 */
+	@Override
+	public String getActualOutput () {
+		updateData();
+		return result.toString();
+	}
+
+	private void updateData() {
+		JobSynchronizableFile file = new JobSynchronizableFile(type, result.length());
+		result.append(source.getOutput(Arrays.asList(file)).get(0));
+	}
+}
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java
index a5b6ce893c40a657fecde4061c0e717756fe7b33..ef0058bd2819e88c09a48aeb92023f70794d3b31 100644
--- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/BenchmarkJobManager.java
@@ -22,8 +22,10 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.yaml.snakeyaml.Yaml;
 
-import cz.it4i.fiji.haas.Job;
+import cz.it4i.fiji.haas.HaaSOutputHolder;
+import cz.it4i.fiji.haas.HaaSOutputHolderImpl;
 import cz.it4i.fiji.haas.HaaSOutputSource;
+import cz.it4i.fiji.haas.Job;
 import cz.it4i.fiji.haas.JobManager;
 import cz.it4i.fiji.haas.JobManager.JobSynchronizableFile;
 import cz.it4i.fiji.haas.UploadingFileFromResource;
@@ -41,6 +43,9 @@ public class BenchmarkJobManager {
 	private static Logger log = LoggerFactory
 			.getLogger(cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.class);
 
+	private JobManager jobManager;
+	
+
 	public final class BenchmarkJob extends ObservableValueBase<BenchmarkJob> implements HaaSOutputSource {
 		
 		private Job job;
@@ -48,12 +53,25 @@ public class BenchmarkJobManager {
 		
 		private HaaSOutputHolder outputOfSnakemake;
 
-		private Collection<Task> tasks;
+		private List<Task> tasks;
+
+		private SPIMComputationAccessor computationAccessor = new SPIMComputationAccessor() {
+			@Override
+			public String getActualOutput() {
+				return outputOfSnakemake.getActualOutput();
+			}
+			
+			@Override
+			public boolean fileExists(String fileName) {
+				// TASK 1011 modify interface of job for checking of file existence
+				return false;
+			}
+		};
 
 		public BenchmarkJob(Job job) {
 			super();
 			this.job = job;
-			outputOfSnakemake = new HaaSOutputHolder(getValue(), SynchronizableFileType.StandardErrorFile);
+			outputOfSnakemake = new HaaSOutputHolderImpl(getValue(), SynchronizableFileType.StandardErrorFile);
 		}
 
 		public void startJob(Progress progress) throws IOException {
@@ -91,7 +109,7 @@ public class BenchmarkJobManager {
 		public List<String> getOutput(List<JobSynchronizableFile> files) {
 			return job.getOutput(files);
 		}
-
+		
 		public long getId() {
 			return job.getId();
 		}
@@ -152,7 +170,7 @@ public class BenchmarkJobManager {
 			return job.getDirectory();
 		}
 		
-		public Collection<Task> getTasks() {
+		public List<Task> getTasks() {
 			if(tasks == null) {
 				fillTasks();
 			}
@@ -161,7 +179,23 @@ public class BenchmarkJobManager {
 		
 
 		private void fillTasks() {
+			SPIMComputationAccessor accessor = computationAccessor;
 			String snakeMakeoutput = outputOfSnakemake.getActualOutput();
+			//TASK 1011 parse snakeOutput, create tasks base part:
+//Job counts:
+//			count	jobs
+//			1	define_output
+//			1	define_xml_tif
+//			1	done
+//			2	fusion
+//			1	hdf5_xml
+//			1	hdf5_xml_output
+//			2	registration
+//			2	resave_hdf5
+//			2	resave_hdf5_output
+//			1	timelapse
+//			1	xml_merge
+//			15
 			
 		}
 		private void setDownloaded(boolean b) {
@@ -174,8 +208,6 @@ public class BenchmarkJobManager {
 		}
 	}
 
-	private JobManager jobManager;
-
 	public BenchmarkJobManager(BenchmarkSPIMParameters params) throws IOException {
 		jobManager = new JobManager(params.workingDirectory(), constructSettingsFromParams(params));
 	}
@@ -350,7 +382,6 @@ public class BenchmarkJobManager {
 	}
 
 	private static Settings constructSettingsFromParams(BenchmarkSPIMParameters params) {
-		// TODO Auto-generated method stub
 		return new Settings() {
 
 			@Override
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/PipelineBase.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/PipelineBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e3fc82ddf6815d1058d3832643cf6407409bb86
--- /dev/null
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/PipelineBase.java
@@ -0,0 +1,29 @@
+package cz.it4i.fiji.haas_spim_benchmark.core;
+
+import java.util.Collection;
+
+abstract public class PipelineBase<T extends PipelineBase<?,?>,S> {
+	private Collection<T> successors;
+	private S id;
+	
+	
+	
+	public PipelineBase( S id) {
+		super();
+		this.id = id;
+	}
+
+	
+	public Collection<T> getSuccessors() {
+		if(successors == null) {
+			successors = fillSuccesors();
+		}
+		return successors;
+	}
+	
+	public S getId() {
+		return id;
+	}
+
+	abstract protected Collection<T> fillSuccesors(); 
+}
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/SPIMComputationAccessor.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/SPIMComputationAccessor.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ba6590109e4406f0d99e247ac8757d25af4e908
--- /dev/null
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/SPIMComputationAccessor.java
@@ -0,0 +1,7 @@
+package cz.it4i.fiji.haas_spim_benchmark.core;
+
+import cz.it4i.fiji.haas.HaaSOutputHolder;
+
+public interface SPIMComputationAccessor extends HaaSOutputHolder {
+	boolean fileExists(String fileName);
+}
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/Task.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/Task.java
index 95ac6f0ab1d1cef69ff66e9f5e8d5ae6483306ff..84af6203020fe9a90b10200c869d33eb2ee07516 100644
--- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/Task.java
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/Task.java
@@ -1,24 +1,36 @@
 package cz.it4i.fiji.haas_spim_benchmark.core;
 
 import java.util.Collection;
-
-import cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.Job;
+import java.util.LinkedList;
 
 public class Task {
+	private SPIMComputationAccessor outputHolder;
 	private String description;
-	private Job job;
 	private Collection<TaskComputation> computations;
-	
-	public Task(Job job,String description) {
+	private int numComputations;
+
+	public Task(SPIMComputationAccessor outputHolder, String description, int numComputations) {
 		this.description = description;
-		this.job = job;
+		this.outputHolder = outputHolder;
+		this.numComputations = numComputations;
+	}
+
+	public Collection<TaskComputation> getComputations() {
+		if (computations == null) {
+			fillComputations();
+		}
+		return computations;
 	}
 
 	public String getDescription() {
 		return description;
 	}
-	
-	public Collection<Task> getPredecessors() {
-		return null;
+
+	private void fillComputations() {
+		computations = new LinkedList<>();
+		for (int i = 0; i < numComputations; i++) {
+			computations.add(new TaskComputation(outputHolder, this, i + 1));
+		}
 	}
+
 }
diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/TaskComputation.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/TaskComputation.java
index 497e2fd107bd2a358d30b82f16e046e92e158848..2d1c7b221d415bac344dbd9221a164108eac5ed7 100644
--- a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/TaskComputation.java
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/core/TaskComputation.java
@@ -1,5 +1,69 @@
 package cz.it4i.fiji.haas_spim_benchmark.core;
 
+import java.util.Collection;
+import java.util.LinkedList;
+
+import cz.it4i.fiji.haas_java_client.JobState;
+
+
 public class TaskComputation {
 
+	private SPIMComputationAccessor outputHolder;
+	private int timepoint;
+	private Long id;
+	//TASK 1011 what states will be defined and how it will be defined
+	private JobState state;
+	private Task task;
+	private Collection<String> logs = new LinkedList<>();
+	private Collection<String> outputs = new LinkedList<>();
+	private Collection<String> inputs = new LinkedList<>();
+
+	
+	public TaskComputation(SPIMComputationAccessor outputHolder,Task task, int timepoint) {
+		this.outputHolder = outputHolder;
+		this.timepoint = timepoint;
+		this.task = task;
+	}
+
+	public JobState getState() {
+		updateState();//TASK 1011 it is not good idea update every time when state is requested 
+		return state != null?state:JobState.Configuring;
+	}
+
+	private void updateState() {
+		String snakeOutput = outputHolder.getActualOutput();
+		Long id = getId();
+		if(id == null) {
+			return;
+		}
+		//TASK 1011 
+		//resolve if job is queued (defined id), started (exists log file), finished (in log is Finished job 10.) or
+		//or failed (some error in log)
+	}
+
+	private Long getId() {
+		if(id == null) {
+			fillId();
+		}
+		return id;
+	}
+
+	private void fillId() {
+		//TASK 1011 
+		//find timepoint-th occurence of
+//rule resave_hdf5:
+//    input: HisRFP_test-01-00.h5_xml, HisRFP_test_first.xml
+//    output: HisRFP_test-01-00.h5, HisRFP_test-01-00.h5_hdf5
+//    log: logs/b2_resave_hdf5-01.log
+//    jobid: 7
+//    wildcards: xml_base=HisRFP_test, file_id=01
+		
+	//resave_hdf5 == task.getDescription()
+	//jobid -> id
+	//input->inputs
+	//...
+	//
+	//or return
+	}
+	
 }