 
   var fullHeight: CGFloat {
     return verticalInset * 2 + verticalDiff * 24
+  }
+
+  var calendarWidth: CGFloat {
+    return bounds.width - leftInset
   }
 
   var fontSize: CGFloat = 11

    _eventHolder = eventViews.filter {$0.datePeriod.overlapsWith(day)}
      .sort {$0.datePeriod.StartDate.isEarlierThan($1.datePeriod.StartDate)}

    let datePeriods = _eventHolder.map {$0.datePeriod}
    let zipped = Array(Zip2Sequence(datePeriods, _eventHolder))

    var result = [[(DTTimePeriod, EventView)]]()
    var temporaryArray = [(DTTimePeriod, EventView)]()

    for tuple in zipped {
      if temporaryArray.isEmpty {
        temporaryArray.append(tuple)
        continue
      }

      if temporaryArray.last!.0.overlapsWith(tuple.0) {
        temporaryArray.append(tuple)
      } else {
        result.append(temporaryArray)
        temporaryArray.removeAll()
      }
    }

    let calendarWidth = bounds.width - leftInset

    for overlappingViews in result {
      let totalCount = CGFloat(overlappingViews.count)
      let events = overlappingViews.map {$0.1}
      for (index, event) in events.enumerate() {
        let startY = dateToY(event.datePeriod.StartDate)
        let endY = dateToY(event.datePeriod.EndDate)


    label.sizeToFit()
    label.frame = CGRect(origin: CGPoint.zero, size: CGSize(width: 375, height: 50))

    layoutNowLine()
    layoutEvents()
  }

  func layoutNowLine() {
    let size = CGSize(width: bounds.size.width, height: 20)
    let rect = CGRect(origin: CGPoint.zero, size: size)
    nowLine.date = date
    nowLine.frame = rect
    nowLine.center.y = dateToY(date)
  }

  func layoutEvents() {
    if eventViews.isEmpty {return}

    let day = DTTimePeriod(size: .Day, startingAt:date)
