diff --git a/srp_analysis/src/main.rs b/srp_analysis/src/main.rs
index b4a52257014976836917402bd5505679053182ca..651c9f54f572a31fe86be2de367cabac4114681e 100644
--- a/srp_analysis/src/main.rs
+++ b/srp_analysis/src/main.rs
@@ -31,7 +31,7 @@ struct Opt {
 fn main() {
 
     let opt = Opt::from_args();
-    println!("{:?}", opt);
+    //println!("{:?}", opt);
     
     let tasks: Tasks = match opt.input {
         Some(file) => load_tasks(file),
@@ -44,22 +44,94 @@ fn main() {
     match opt.output {
         Some(file) => {
             write_to_file(serde_json::to_string(&analysis).unwrap(), file);
-        }, // TODO: Implement so that the analysis can be saved to html.
+        }, // TODO: Implement so that the analysis can be saved to txt.
         None => {
-            println!("tasks {:?}", &tasks);
-            println!("tot_util {}", total_load_factor(&tasks));
+            println!("{}", format_analysis(&analysis, &tasks, &ip, &tr)); 
+        },
+    };
+}
 
-            println!("ip: {:?}", ip);
-            println!("tr: {:?}", tr);
 
-            println!("Analysis {:#?}", analysis);
+fn format_analysis(analysis: &Vec<AnalysedTask>, tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String {
+    let overview = format_overview(tasks, ip, tr);
 
-            // TODO: Implement a nicer print out to stdout.
-        },
-    };
+    let mut body = String::new();
+    for at in analysis {
+        body = format!("{}\n{}", body, format_analysed_task(at));
+    }
+
+    body = format!("{}\n", body);
+
+    for t in tasks {
+        body = format!("{}\n{}", body, format_task(t));
+    }
+
+    return format!("{}\n{}", overview, body);
 }
 
 
+fn format_overview(tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String {
+    fn format_task_names(tasks: &Tasks) -> String {
+        let mut task_names = "Tasks:".to_string();
+        for t in tasks {
+            task_names = format!("{} {}", task_names, t.id);
+        } 
+        return task_names;
+    }
+    fn format_id_prio(ip: &IdPrio) -> String {
+//    let id_prio = format!("Id Priority: {:?}", ip);
+        let mut id_prio = "Priority:".to_string();
+        for (key, value) in ip {
+            id_prio = format!("{}  P({}) = {}", id_prio, key, value);
+        }
+        return id_prio;
+    }
+    fn format_task_res(tr: &TaskResources) -> String {
+//    let task_res = format!("Task Resources: {:?}", tr);
+        let mut task_res = "Task Resources:".to_string();
+        for (key, value) in tr {
+            
+            let mut values_st = "(".to_string();
+            for v in value {
+                values_st = format!("{} {}", values_st, v);
+            }
+            task_res = format!("{} {}:{} )", task_res, key, values_st);
+        }
+        return task_res;
+    }
+    let tot_util = format!("Total Util: {}", total_load_factor(tasks));
+    let task_names = format_task_names(tasks);
+    let id_prio = format_id_prio(ip);
+    let task_res = format_task_res(tr);
+
+    return format!("Overview\n\t{}\n\t{}\n\t{}\n\t{}", tot_util, task_names, id_prio, task_res); 
+}
+ 
+
+fn format_analysed_task(task: &AnalysedTask) -> String {
+    let header = format!("Analysis of {}", task.task.id);
+    let res_t = format!("Response Time: {}", task.response_time);
+    let wcet = format!("wcet: {}", task.wcet);
+    let block_t = format!("Block Time: {}", task.block_time);
+    let pre_t = format!("Preemtion Time: {}", task.preemtion_time);
+    return format!("{}\n\t{}\n\t{}\n\t{}\n\t{}", header, res_t, wcet, block_t, pre_t);
+}
+
+fn format_task(task: &Task) -> String {
+    let id = format!("Task {}", task.id);
+    let prio = format!("Priority: {}", task.prio);
+    let dl = format!("Deadline: {}", task.deadline);
+    let inter_a = format!("Inter Arrival: {}", task.inter_arrival);
+    let trace = format_trace(&task.trace);
+    return format!("{}\n\t{}\n\t{}\n\t{}\n\t{}", id, prio, dl, inter_a, trace);
+}
+
+fn format_trace(trace: &Trace) -> String {
+    return format!("{:?}", trace);
+}
+
+
+
 fn write_to_file(contents: String, file: PathBuf) -> std::io::Result<()> {
     let mut file = File::create(file)?;
     file.write_all(contents.as_bytes())?;
@@ -79,8 +151,7 @@ fn read_from_file(contents: &mut String, filename: PathBuf) -> std::io::Result<(
 }
 
 
-fn create_tasks() -> Tasks {
-    let t1 = Task {
+fn create_tasks() -> Tasks { let t1 = Task {
         id: "T1".to_string(),
         prio: 1,
         deadline: 100,