          onStateChange?(state)
       }
    }
+   
+   // MARK: - Init
+   public init() {}
+}
+
+open class ConductionModel<Key: IncKVKeyType, State: ConductionModelState>: ConductionStateModel<State>, ConductionModelType {
+   // MARK: Private Properties
+   private var values: [Key : Any] = [:]
+   
+   // MARK: Public Properties
    open var modelReadOnlyKeys: [Key] { return [] }
    open var modelReadWriteKeys: [Key] { return Key.all }
    open var modelWriteOnlyKeys: [Key] { return [] }

   public init() {}
}

open class ConductionModel<Key: IncKVKeyType, State: ConductionModelState>: ConductionModelType {
   // MARK: Private Properties
   private var values: [Key : Any] = [:]
   
   // MARK: Public Properties
   public var state: State = State() {
      didSet {

   public func value<T>(for key: Key, default defaultValue: T?) -> T? {
      return value(for: key) as? T ?? defaultValue
   }
   
   // MARK: - Model Binding
   public func bind(model: StringBindable) throws {
