   var sub: Subscription?
 }
 
-public protocol PropertyInfo: Axiom, SlotGetterAxiom, SlotSetterAxiom, GetterAxiom, SetterAxiom {
+public protocol PropertyInfo: Axiom, SlotGetterAxiom, SlotSetterAxiom, GetterAxiom, SetterAxiom, Expr {
   var classInfo: ClassInfo { get }
   var transient: Bool { get }
   var label: String { get }

    }
    return axs
  }
  func create(x: Context) -> Any { return create(args: [:], x: x) }
}

public protocol Detachable {

}

extension ClassInfo {
  func create() -> Any {
    return create(args: [:], x: Context.GLOBAL)
  }
  func create(x: Context) -> Any {
    return create(args: [:], x: x)
  }
  func create(args: [String:Any?]) -> Any {
    return create(args: args, x: Context.GLOBAL)
  }

  func ownAxioms<T>(byType type: T.Type) -> [T] {
    var axs: [T] = []
    for axiom in ownAxioms {
