Index: flowtimer/Phase.py
===================================================================
--- flowtimer/Phase.py	(revision 8f41b95d4b55aa3b2af4f8c54fb96896aee07fef)
+++ flowtimer/Phase.py	(revision df0449c614c7d6aa1654b0f26e557901c25ff3c1)
@@ -7,4 +7,8 @@
     This class is a representation of a single phase inside a timer
     """
+
+    @classmethod
+    def default(cls):
+        return cls('Default', 30)
 
     def __init__(self, title, ticks):
@@ -71,5 +75,4 @@
     def is_running(self):
         return self._state == "running"
-        # return self.time_left > 0
 
     def is_terminated(self):
@@ -83,7 +86,8 @@
 
     def tick(self, ticks):
+        self.start()
         result = self._ticks_left - ticks
 
-        if result <= 0:
+        if result < 1:
             self._ticks_left = 0
             self._state = "completed"
Index: flowtimer/RecurringPhaseSequence.py
===================================================================
--- flowtimer/RecurringPhaseSequence.py	(revision 8f41b95d4b55aa3b2af4f8c54fb96896aee07fef)
+++ flowtimer/RecurringPhaseSequence.py	(revision df0449c614c7d6aa1654b0f26e557901c25ff3c1)
@@ -70,5 +70,5 @@
     def ticks_left(self):
         return (
-            (self.passes_left-1) * sum([each.initial_ticks for each in self.phases]) +
+            (self.passes_left) * sum([each.initial_ticks for each in self.phases]) +
             self.current_phase.ticks_left +
             sum([each.ticks_left for each in self.upcoming_phases_in_pass()]))
@@ -80,5 +80,4 @@
 
     def is_final_round(self):
-        print("Final round", self.passes_left)
         return self.passes_left == 0
 
@@ -108,10 +107,8 @@
         else:
             if self.is_final_round():
-                print("Abort on final round")
                 self.abort()
                 return
             else:
                 self.passes_left -= 1
-                print("Skip", self.passes_left)
                 self.current_phase.reset()
                 self.current_phase = self.phases[0]
@@ -123,4 +120,5 @@
             self.current_phase.reset()
             self.current_phase = self.phases[current_index + 1]
+            # self.current_phase.start()
         else:
             # Completed a full sequence; check if more repetitions are needed
@@ -128,8 +126,8 @@
             if self.passes_left < 1:
                 self._state = "completed"
-                print("Passes left", self.passes_left)
             else:
                 self.current_phase.reset()
                 self.current_phase = self.phases[0]  # Reset to the first phase
+                # self.current_phase.start()
 
     def tick(self, ticks):
@@ -139,5 +137,8 @@
                 self.advance_to_next_phase()
                 result = self.tick(abs(result))
-                return
+                return result
+            return result
+        else:
+            return 0
 
     def unrolled(self):
Index: flowtimer/Schedule.py
===================================================================
--- flowtimer/Schedule.py	(revision 8f41b95d4b55aa3b2af4f8c54fb96896aee07fef)
+++ flowtimer/Schedule.py	(revision df0449c614c7d6aa1654b0f26e557901c25ff3c1)
@@ -144,5 +144,4 @@
     def skip(self):
         if self.current_block.is_sequence():
-            print("Skip the next phase in sequence")
             self.current_block.skip()
             if self.current_block.is_terminated():
@@ -153,5 +152,4 @@
             return
         if self.current_block_is_final():
-            print("Time over")
             self.abort()
             return
Index: flowtimer/flowtimer_logging.conf
===================================================================
--- flowtimer/flowtimer_logging.conf	(revision df0449c614c7d6aa1654b0f26e557901c25ff3c1)
+++ flowtimer/flowtimer_logging.conf	(revision df0449c614c7d6aa1654b0f26e557901c25ff3c1)
@@ -0,0 +1,21 @@
+[loggers]
+keys=root
+
+[handlers]
+keys=stream_handler
+
+[formatters]
+keys=formatter
+
+[logger_root]
+level=DEBUG
+handlers=stream_handler
+
+[handler_stream_handler]
+class=StreamHandler
+level=DEBUG
+formatter=formatter
+args=(sys.stderr,)
+
+[formatter_formatter]
+format=%(asctime)s %(name)-12s %(levelname)-8s %(message)s
Index: tests/test_phase.py
===================================================================
--- tests/test_phase.py	(revision 8f41b95d4b55aa3b2af4f8c54fb96896aee07fef)
+++ tests/test_phase.py	(revision df0449c614c7d6aa1654b0f26e557901c25ff3c1)
@@ -2,12 +2,16 @@
 from flowtimer.Phase import Phase
 
+
 class TestPhase:
 
-    def test_phase_initialization(self):
-        phase = Phase("Warm-up", 300)
-        assert phase.title == "Warm-up"
-        assert phase.initial_ticks == 300
+    @pytest.fixture
+    def phase(self):
+        return Phase.default()
+
+    def test_phase_initialization(self, phase):
+        assert phase.title == "Default"
+        assert phase.initial_ticks == 30
         assert phase.state == "initial"
-        assert phase.ticks_left == 300
+        assert phase.ticks_left == 30
 
 #    def test_phase_str_representation(self):
@@ -16,12 +20,10 @@
 #        assert str(phase) == expected_str
 
-    def test_phase_start(self):
-        phase = Phase("Warm-up", 300)
+    def test_phase_start(self, phase):
         phase.start()
         assert phase.state == "running"
         assert phase.is_running() is True
 
-    def test_phase_pause(self):
-        phase = Phase("Warm-up", 300)
+    def test_phase_pause(self, phase):
         phase.start()
         phase.pause()
@@ -29,27 +31,27 @@
         assert phase.is_paused() is True
 
-    def test_phase_abort(self):
-        phase = Phase("Warm-up", 300)
+    def test_phase_abort(self, phase):
         phase.abort()
         assert phase.state == "aborted"
         assert phase.is_aborted() is True
 
-    def test_phase_tick(self):
-        phase = Phase("Warm-up", 300)
+    def test_phase_tick(self, phase):
         phase.start()
-        phase.tick(60)
-        assert phase.ticks_left == 240
+        phase.tick(10)
+        assert phase.ticks_left == 20
         assert phase.state == "running"
+        assert phase.is_running()
 
-    def test_phase_tick_to_completion(self):
-        phase = Phase("Warm-up", 300)
+    def test_phase_tick_to_completion(self, phase):
         phase.start()
-        phase.tick(300)
+        phase.tick(30)
         assert phase.ticks_left == 0
         assert phase.is_completed() is True
+        assert phase.state == 'completed'
 
-    def test_phase_tick_beyond_completion(self):
-        phase = Phase("Warm-up", 300)
+    def test_phase_tick_beyond_completion(self, phase):
         phase.start()
         phase.tick(350)
         assert phase.ticks_left == 0
+        assert phase.is_completed() is True
+        assert phase.state == 'completed'
Index: tests/test_recurring_phase_sequence.py
===================================================================
--- tests/test_recurring_phase_sequence.py	(revision 8f41b95d4b55aa3b2af4f8c54fb96896aee07fef)
+++ tests/test_recurring_phase_sequence.py	(revision df0449c614c7d6aa1654b0f26e557901c25ff3c1)
@@ -50,5 +50,4 @@
         total_ticks = (sum([phase.initial_ticks for phase in recurring_phase_sequence.phases]) *
                        recurring_phase_sequence.initial_repetitions)
-
         assert recurring_phase_sequence.ticks_left == total_ticks
         recurring_phase_sequence.tick(10)
