diff --git a/GooCalendar/Calendar.py b/GooCalendar/Calendar.py
index 59d9c71058db0ced1bafb3e7ea976c38dae92d64_R29vQ2FsZW5kYXIvQ2FsZW5kYXIucHk=..f456097995ad4cfa42db97e39eaaa959ba3864b8_R29vQ2FsZW5kYXIvQ2FsZW5kYXIucHk= 100644
--- a/GooCalendar/Calendar.py
+++ b/GooCalendar/Calendar.py
@@ -369,7 +369,8 @@
         """
         weeks = util.my_monthdatescalendar(self.cal, *self.selected_date)
         start = event.start.timetuple()[:3]
-        end = event.end.timetuple()[:3]
+        end = event.end if event.end else event.start
+        end = end.timetuple()[:3]
         days = []
         for weekno, week in enumerate(weeks):
             if self.zoom == "week":
@@ -384,7 +385,7 @@
                     return days
         if len(days) > 0:
             return days
-        raise Exception('Days not found: %s %s' % (event.start, event.end))
+        raise Exception('Days not found: %s %s' % (event.start, end))
 
     def _find_free_line(self, days):
         for line in range(days[0].n_lines):
@@ -487,4 +488,5 @@
                 event_item.height = day.line_height
                 week_start = week[0].date
                 week_end = week[-1].date
+                end = event.end if event.end else event.start
                 if (event.start.date() < week_start
@@ -490,7 +492,7 @@
                 if (event.start.date() < week_start
-                        and event.end.date() > week_end):
+                        and end.date() > week_end):
                     event_item.type = 'mid'
                     event_item.width -= 3
                 elif event.start.date() < week_start:
                     event_item.type = 'right'
                     event_item.width -= 4
@@ -492,9 +494,9 @@
                     event_item.type = 'mid'
                     event_item.width -= 3
                 elif event.start.date() < week_start:
                     event_item.type = 'right'
                     event_item.width -= 4
-                elif event.end.date() > week_end:
+                elif end.date() > week_end:
                     event_item.type = 'left'
                     event_item.x += 2
                     event_item.width -= 4
@@ -674,7 +676,8 @@
                 daysdelta = self.drag_start_date - event_date
                 event_item.x += daysdelta.days * self.day_width
                 event_item.event.start += daysdelta
-                event_item.event.end += daysdelta
+                if event_item.event.end:
+                    event_item.event.end += daysdelta
         event_item.update()
         self.emit('event-clicked', event_item.event)
 
@@ -683,7 +686,8 @@
         cur_pointed_date = self.get_cur_pointed_date(event.x, event.y)
         daysdelta = cur_pointed_date - self.drag_start_date
         event_item.event.start += daysdelta
-        event_item.event.end += daysdelta
+        if event_item.event.end:
+            event_item.event.end += daysdelta
         event_item.transparent = False
 
         # Drag and drop is over
@@ -747,7 +751,8 @@
             # Apply event item vertical translation
             timedelta = new_time - old_time
             event_item.event.start += timedelta
-            event_item.event.end += timedelta
+            if event_item.event.end:
+                event_item.event.end += timedelta
             pxdelta = (timedelta.total_seconds() / 60 * self.minute_height)
             event_item.y += pxdelta
             event_item.update()
diff --git a/GooCalendar/Event.py b/GooCalendar/Event.py
index 59d9c71058db0ced1bafb3e7ea976c38dae92d64_R29vQ2FsZW5kYXIvRXZlbnQucHk=..f456097995ad4cfa42db97e39eaaa959ba3864b8_R29vQ2FsZW5kYXIvRXZlbnQucHk= 100644
--- a/GooCalendar/Event.py
+++ b/GooCalendar/Event.py
@@ -19,7 +19,6 @@
         self.bg_color = kwargs.get('bg_color', 'orangered')
         if end is None:
             self.all_day = True
-            self.end = start
 
     @property
     def multidays(self):
diff --git a/GooCalendar/EventItem.py b/GooCalendar/EventItem.py
index 59d9c71058db0ced1bafb3e7ea976c38dae92d64_R29vQ2FsZW5kYXIvRXZlbnRJdGVtLnB5..f456097995ad4cfa42db97e39eaaa959ba3864b8_R29vQ2FsZW5kYXIvRXZlbnRJdGVtLnB5 100644
--- a/GooCalendar/EventItem.py
+++ b/GooCalendar/EventItem.py
@@ -87,6 +87,4 @@
         style = self.cal.get_style()
         font_descr = style.font_desc.copy()
         self.font = font_descr.to_string()
-        starttime = self.event.start.strftime(self.time_format)
-        endtime = self.event.end.strftime(self.time_format)
         if self.event.multidays and not self.event.all_day:
@@ -92,4 +90,6 @@
         if self.event.multidays and not self.event.all_day:
+            starttime = self.event.start.strftime(self.time_format)
+            endtime = self.event.end.strftime(self.time_format)
             caption = '%s - %s %s' % (starttime, endtime, self.event.caption)
         else:
             caption = self.event.caption
diff --git a/GooCalendar/util.py b/GooCalendar/util.py
index 59d9c71058db0ced1bafb3e7ea976c38dae92d64_R29vQ2FsZW5kYXIvdXRpbC5weQ==..f456097995ad4cfa42db97e39eaaa959ba3864b8_R29vQ2FsZW5kYXIvdXRpbC5weQ== 100644
--- a/GooCalendar/util.py
+++ b/GooCalendar/util.py
@@ -79,8 +79,10 @@
 
 
 def event_days(event1, event2):
-    return (time_delta(event1.start, event1.end).days
-         - time_delta(event2.start, event2.end).days)
+    end1 = event1.end if event1.end else event1.start
+    end2 = event2.end if event2.end else event2.start
+    return (time_delta(event1.start, end1).days
+         - time_delta(event2.start, end2).days)
 
 
 def event_intersects(event, start, end=None):