     The value that is to be observered.
     All current observers will be notified when it is assigned to.
    */
-  public var value: T? {
+  public var value: T {
     didSet {
       notify()
     }
   }
   
-  init(value: T?) {
+  init(value: T) {
     self.value = value
   }
   


// MARK: -
private class ObserverWrapper<T>: Disposable {
  init(subject: Subject<T>, function: (T?) -> Void) {
    self.subject = subject
    self.function = function
  }
  
  func update(value: T?) {
    function(value)
  }
  

  }
  
  unowned let subject: Subject<T>
  let function: (T) -> Void
}
