Index: flowtimer/Phase.py
===================================================================
--- flowtimer/Phase.py	(revision bd94da0b8f9d6e4e249f9efd5a0ec909e81c1c2d)
+++ flowtimer/Phase.py	(revision a4381581f8d24d191694ccd542622747e5467e3d)
@@ -51,5 +51,5 @@
 
     def is_sequence(self):
-        return False 
+        return False
 
     def abort(self):
Index: flowtimer/RecurringPhaseSequence.py
===================================================================
--- flowtimer/RecurringPhaseSequence.py	(revision bd94da0b8f9d6e4e249f9efd5a0ec909e81c1c2d)
+++ flowtimer/RecurringPhaseSequence.py	(revision a4381581f8d24d191694ccd542622747e5467e3d)
@@ -73,5 +73,7 @@
 
     def finished(self):
-        return (self.passes_left < 1) and (not self.upcoming_phases_in_pass())
+        return ((self.passes_left < 1) and
+                (not self.upcoming_phases_in_pass() and
+                 self.current_phase.finished()))
 
     def abort(self):
@@ -88,4 +90,5 @@
             return
         else:
+            print("Sequence finished")
             if self.passes_left == 0:
                 self.abort()
Index: flowtimer/Schedule.py
===================================================================
--- flowtimer/Schedule.py	(revision bd94da0b8f9d6e4e249f9efd5a0ec909e81c1c2d)
+++ flowtimer/Schedule.py	(revision a4381581f8d24d191694ccd542622747e5467e3d)
@@ -1,7 +1,9 @@
 import json
+from flowtimer.Phase import Phase
+from flowtimer.RecurringPhaseSequence import RecurringPhaseSequence
 
 """
 I represent a Schedule consisting of blocks. Blocks can be a single phase or
-a sequence of phases. 
+a sequence of phases.
 """
 
@@ -9,9 +11,62 @@
 class Schedule:
 
-    def __init__(self, block_list):
-        assert block_list is not []
-        self.block_list = block_list
-        self.current_block = block_list[0]
+    def __init__(self, title, blocks):
+        assert blocks is not []
+        self.title = title
+        self.blocks = blocks
+        self.current_block = blocks[0]
         self.state = "initial"
+
+    @classmethod
+    def default_json_string(cls):
+        return json.dumps(
+            {"title": "Default",
+                "blocks": [
+                    {"type": "Phase",
+                     "title": "MorningHuddle",
+                     "initial_ticks": 900
+                     },
+                    {"type": "Sequence",
+                     "title": "AM",
+                     "sequence": [
+                         {
+                             "title": "Tasking",
+                             "initial_ticks": 120
+                         },
+                         {
+                             "title": "Working",
+                             "initial_ticks": 5400
+                         },
+                         {
+                             "title": "Syncing",
+                             "initial_ticks": 300
+                         },
+                         {
+                             "title": "Break",
+                             "initial_ticks": 600
+                         }
+                     ],
+                     "initial_repetitions": 2
+                     }
+                ]
+             }
+        )
+
+    @classmethod
+    def from_json(cls, a_json_string):
+        def custom_object_hook(d):
+            if 'title' in d and 'blocks' in d:
+                return Schedule(d['title'], d['blocks'])
+            if 'title' in d and 'initial_ticks' in d:
+                return Phase(d['title'], d['initial_ticks'])
+            if 'sequence' in d and 'initial_repetitions' in d:
+                return RecurringPhaseSequence(d["title"], d['sequence'], d['initial_repetitions'])
+            print("Wrong format")
+            return d
+        return json.loads(a_json_string, object_hook=custom_object_hook)
+
+    @classmethod
+    def default(cls):
+        return cls.from_json(cls.default_json_string())
 
     def to_json(self):
@@ -36,5 +91,5 @@
 
     def finished(self):
-        if (self.current_block.finished()) and (self.block_list[-1] == self.current_block):
+        if (self.current_block.finished()) and (self.blocks[-1] == self.current_block):
             self.state = "finished"
             return True
@@ -43,12 +98,16 @@
 
     def skip(self):
-        if self.current_block.is_sequence:
+        if self.current_block.is_sequence():
             self.current_block.skip()
-        else:
-            if self.current_block_is_final():
-                self.abort()
-            else:
-                index = self.block_list.index(self.current_block)
-                self.current_block = self.block_list[index+1]
+            print("Skip the next phase in sequence")
+            return
+        if self.current_block_is_final():
+            print("Time over")
+            self.abort()
+            return
+        print("Jump to next block")
+        index = self.blocks.index(self.current_block)
+        self.current_block = self.blocks[index+1]
+        return
 
     def total_ticks_left(self):
@@ -57,16 +116,16 @@
 
     def upcoming_blocks(self):
-        index = self.block_list.index(self.current_block)
-        if index < len(self.block_list):
-            return self.block_list[index+1:]
+        index = self.blocks.index(self.current_block)
+        if index < len(self.blocks):
+            return self.blocks[index+1:]
         return []
 
     def current_block_is_final(self):
-        index = self.block_list.index(self.current_block)
-        return index == (len(self.block_list) - 1)
+        index = self.blocks.index(self.current_block)
+        return index == (len(self.blocks) - 1)
 
-    def tick(self, duration):
+    def tick(self, ticks):
         if not self.finished():
-            self.current_block.tick(duration)
+            self.current_block.tick(ticks)
             if self.current_block.finished():
                 if self.current_block_is_final():
Index: flowtimer/configs/default.json
===================================================================
--- flowtimer/configs/default.json	(revision bd94da0b8f9d6e4e249f9efd5a0ec909e81c1c2d)
+++ flowtimer/configs/default.json	(revision a4381581f8d24d191694ccd542622747e5467e3d)
@@ -1,4 +1,4 @@
 { "title": "Default",
-  "schedule": [
+  "blocks": [
       {"type": "Phase",
        "title": "MorningHuddle",
Index: flowtimer/main.py
===================================================================
--- flowtimer/main.py	(revision bd94da0b8f9d6e4e249f9efd5a0ec909e81c1c2d)
+++ flowtimer/main.py	(revision a4381581f8d24d191694ccd542622747e5467e3d)
@@ -3,5 +3,4 @@
 from tkinter import filedialog
 from Schedule import Schedule
-from RecurringPhaseSequence import RecurringPhaseSequence
 from PIL import Image, ImageTk
 from pathlib import Path
@@ -162,4 +161,6 @@
     def skip(self):
         self.schedule.skip()
+        if self.schedule.finished():
+            print("finished")
 
     def toggle_tick(self):
@@ -207,5 +208,5 @@
 
     def change_config(self, json_string):
-        self.schedule = Schedule([RecurringPhaseSequence.from_json(json_string)])
+        self.schedule = Schedule.from_json(json_string)
 
     def load_config(self, file_name=Path(__file__).parent / 'configs' / 'default.json'):
