diff --git a/Makefile b/Makefile
index 0e1e670a4b6e1a431279c7ed693d207ce30081c5..9b9877701f7ecbf048349904b27148c3f0b58808 100644
--- a/Makefile
+++ b/Makefile
@@ -40,3 +40,6 @@ ilp-noncached.scm: ilp.scm
 clean:
 	rm -rf $(RACKET_BUILD_DIR)/*
 	rm -rf $(LARCENY_BUILD_DIR)/*
+
+run: racket
+	fab call_racket:cli.scm,ag | tee ast-output.txt | head
diff --git a/ast-generation.scm b/ast-generation.scm
index a40b6c04dbf753ff263e6c07fc726bdda1bcad7d..6e7dbb6ef67f252956b6f502b296a96a82bb745f 100644
--- a/ast-generation.scm
+++ b/ast-generation.scm
@@ -7,13 +7,13 @@
 (library
  (mquat ast-generation)
  (export create-hw create-sw create-system rand
-         freq-name load-name mp-name node-name make-prov make-req)
+         pn-freq pn-load mp-name node-name make-prov make-req)
  (import (rnrs) (racr core) (srfi :27)
          (mquat constants) (mquat ast) (mquat basic-ag) (mquat join) (mquat utils))
 
  ;;; Reusable nodes and names
- (define load-name "load")
- (define freq-name "frequency")
+ (define pn-load "load")
+ (define pn-freq "frequency")
 
  (define mp-name "size")
 
@@ -27,8 +27,8 @@
                                        (lambda _ val)))
 
  (define (something v) v)
- (define (make-prov property comparator value) (:ProvClause mquat-spec property comparator value))
- (define (make-req property comparator value) (:ReqClause mquat-spec property comparator value))
+ (define (make-prov propname comparator value) (:ProvClause mquat-spec (:PropertyRef propname) comparator value))
+ (define (make-req  propname comparator value) (:ReqClause  mquat-spec (:PropertyRef propname) comparator value))
 
  ; return a proc or #f
  (define (create-clause udfs default-fun name)
@@ -43,7 +43,7 @@
  (define (create-hw load freq num-pe num-subs ud-clauses ud-types)
    (define types-al (list))
    (define (make-type nr container?) (:ResourceType mquat-spec (node-name "type" (list nr)) container?
-                                                    (list (:PropertyRef mquat-spec load) (:PropertyRef mquat-spec freq))))
+                                                    (list (:PropertyRef mquat-spec pn-load) (:PropertyRef mquat-spec pn-freq))))
    (define (type nr container?)
      (let ([entry (assq nr types-al)])
        (if entry (cdr entry) (let ([new (make-type nr container?)]) (set! types-al (cons (cons nr new) types-al)) new))))
@@ -55,8 +55,8 @@
            #f)))
    (define (default-hw-clause-gen property-name)
      (cond
-       [(string=? property-name load-name) (list make-prov comp-eq (rand 50 2 0))] ; provided load = [0.01, 50.00]
-       [(string=? property-name freq-name) (list make-prov comp-eq (rand 1000 2 500))] ; provided freq = [500.01 - 1000.00]
+       [(string=? property-name pn-load) (list make-prov comp-eq (rand 50 2 0))] ; provided load = [0.01, 50.00]
+       [(string=? property-name pn-freq) (list make-prov comp-eq (rand 1000 2 500))] ; provided freq = [500.01 - 1000.00]
        [else (error "default-hw-clause-gen" "Wrong property" property-name)]))
    (letrec ([make-subs (lambda (outer-id total subs)
                          (call-n-times (lambda (sub-n)
@@ -79,8 +79,9 @@
    (define (new-comp comp comp-nr) (set! last-comp-nr comp-nr) (set! last-comp comp))
    (define energy (:RealProperty mquat-spec pn-energy "J" 'runtime 'decreasing agg-sum))
    (define prop-al (list))
-   (define (make-sw-prop n) (list (:RealProperty mquat-spec (node-name "p" (list n)) "unit" 'runtime 'increasing agg-max)
-                                  (:PropertyRef mquat-spec energy)))
+   (define (make-sw-prop n) (debug "make-sw-prop" n)
+    (list (:RealProperty mquat-spec (node-name "p" (list n)) "unit" 'runtime 'increasing agg-max)
+                                  (:PropertyRef mquat-spec pn-energy)))
    (define (prop n)
      (let ([entry (assq n prop-al)])
        (if entry (cdr entry) (let ([new (make-sw-prop n)]) (set! prop-al (cons (cons n new) prop-al)) new))))
@@ -92,9 +93,9 @@
                       [comp-nr+1 (+ comp-nr 1)])
                   (cond
                     ; required load max [50.01, 100.00] if valid!?, [0.01 - 100.00] otherwise
-                    [(string=? property-name load-name) (list make-req comp-max-eq (if valid!? (rand 100 2 50) (rand 100 2 0)))]
+                    [(string=? property-name pn-load) (list make-req comp-max-eq (if valid!? (rand 100 2 50) (rand 100 2 0)))]
                     ; required freq min [0.01, 500.00]
-                    [(string=? property-name freq-name) (list make-req comp-min-eq (rand 500 2 0))]
+                    [(string=? property-name pn-freq) (list make-req comp-min-eq (rand 500 2 0))]
                     ; provided prop-n = [5.01 - 10.00] if valid!?, [0.01 - 10.00] otherwise
                     [(string=? property-name (->name (car ps))) (list make-prov comp-eq (if valid!? (rand 10 2 5) (rand 10 2 0)))]
                     ; provided energy = [0.001 - 100.000]
@@ -106,10 +107,12 @@
             [create-sw-clause
              (lambda (udfs name comp-nr property)
                (let ([f (create-clause udfs default-sw-clause-gen name)]
-                     [real-property (=real property)])
-                 (if f (let ([args (f (->name real-property) comp-nr)])
-                         (if (eq? args #t) (set! args (default-sw-clause-gen (->name real-property) comp-nr)))
-                         (if args ((car args) real-property (cadr args) (caddr args)) #f)) #f)))]
+                     [property-name (if (ast-subtype? property 'RealProperty) (->name property) (ast-child 'refname property))])
+                 (debug "create-sw-clause: f=" f ", propertyname =" property-name )
+                 (if f (let ([args (f property-name comp-nr)])
+                         (debug "create-sw-clause: args=" args)
+                         (if (eq? args #t) (set! args (default-sw-clause-gen property-name comp-nr)))
+                         (if args ((car args) property-name (cadr args) (caddr args)) #f)) #f)))] ; (car args) is either make-req or make-prov
             [ps (prop comp)]
             [name (node-name "m" (cons mode impl-lon))]
             [cls (filter something (list (create-sw-clause ud-clauses name comp load)
@@ -136,10 +139,11 @@
  (define (create-request target-property)
    (let* ([make-req (lambda (p maxVal digits offset) (:ReqClause mquat-spec p comp-min-eq (rand maxVal digits offset)))]
           [target (<<- target-property)])
+     (debug "create-request: target-property = " target-property)
      (:Request
       mquat-spec
       (list (:MetaParameter mquat-spec mp-name ((rand 100 2 0))))
-      target (list (make-req target-property 1 2 0)) #f)))
+      target (list (make-req target-property 1 2 0)) #f))) ;TODO: check type of target-property (terminal?, Property?)
 
  ; Creates a new system.
  ; num-pe:        total number of resources
@@ -170,8 +174,8 @@
  (define (create-system1 num-pe num-pe-subs num-comp impl-per-comp mode-per-impl sw-reqc ud-sw-clauses ud-hw-clauses ud-types)
    (let* ([types-al (list)]
           [prop-al (list)]
-          [load (:RealProperty mquat-spec load-name "%" 'runtime 'decreasing agg-sum)]
-          [freq (:RealProperty mquat-spec freq-name "MHz" 'runtime 'increasing agg-max)]
+          [load (:RealProperty mquat-spec pn-load "%" 'runtime 'decreasing agg-sum)]
+          [freq (:RealProperty mquat-spec pn-freq "MHz" 'runtime 'increasing agg-max)]
           [sw-result (create-sw load freq num-comp impl-per-comp mode-per-impl ud-sw-clauses sw-reqc)]
           [sw-root (car sw-result)]
           [target-property (cdr sw-result)])
diff --git a/ast.scm b/ast.scm
index 2dad022a3fbb0e63a5c90644bdeea84faa247265..e263bd515b44eecd10fc0627b9f70c3ff7af8fc9 100644
--- a/ast.scm
+++ b/ast.scm
@@ -13,7 +13,7 @@
          ->Impl* ->selected-impl ; Comp
          ->Mode* ->deployed-on ->selected-mode ; Impl
          ->Clause* ; Mode
-         ->return-type ->comparator ; Clause
+         ->ReturnType ->comparator ; Clause
          ->ResourceType* ; HWRoot
          ->container? ; ResourceType
          ->type ->status ->ProvClause* ; Resource
@@ -47,7 +47,7 @@
  (define (->target n)         (ast-child 'target n))
  (define (->Constraints n)    (ast-child 'Constraints n))
  (define (->objective n)      (ast-child 'objective n))
- (define (->return-type n)    (ast-child 'returntype n))
+ (define (->ReturnType n)     (ast-child 'ReturnType n))
  (define (->comparator n)     (ast-child 'comp n))
  (define (->value n)          (ast-child 'value n))
  (define (->unit n)           (ast-child 'unit n))
@@ -82,10 +82,10 @@
     (ast-rule 'Comp->name-Impl*-selectedimpl-Property*)
     (ast-rule 'Impl->name-Mode*-reqcomps-deployedon-selectedmode)
     (ast-rule 'Mode->name-Clause*)
-    ;value is a function, expecting an AST-List-Node with MetaParameters and the target resource type, returning the value
-    ;comp is a lambda expecting two values, required and actual, returning #t or #f
-    (ast-rule 'Clause->returntype-comp-value)
+    ; value is a function, expecting an AST-List-Node with MetaParameters and the target resource type, returning the value
+    ; comp is a lambda expecting two values, required and actual, returning #t or #f
     ; target is either a Comp or a ResourceType
+    (ast-rule 'Clause->PropertyRef<ReturnType-comp-value)
     (ast-rule 'ReqClause:Clause->)
     (ast-rule 'ProvClause:Clause->)
     (ast-rule 'HWRoot->ResourceType*-Resource*<SubResources-RealProperty*)
diff --git a/basic-ag.scm b/basic-ag.scm
index 1736b057f69167fd2177dd7cec01696f7c62ca8c..5b4663e2c1e7bba07ab0c73c20bac5e0d649dbf0 100644
--- a/basic-ag.scm
+++ b/basic-ag.scm
@@ -75,8 +75,8 @@
      actual-value
      (ReqClause
       (lambda (n)
-        (let ([propName (->name (=real (->return-type n)))]
-              [target (<<- (=real (->return-type n)))])
+        (let ([propName (->name (=real (->ReturnType n)))]
+              [target (<<- (=real (->ReturnType n)))])
           ((->value (if (ast-subtype? target 'ResourceType)
                         ; hw → search in deployedon for name and type
                         (=provided-clause (->deployed-on (<=impl n)) propName target)
@@ -122,7 +122,7 @@
      (Property
       (lambda (n comparator)
         (filter (lambda (cl) (and (eq? comparator (->comparator cl)) (ast-subtype? cl 'ReqClause)
-                                  (eq? n (=real (->return-type cl))))) (=every-sw-clause n)))))
+                                  (eq? n (=real (->ReturnType cl))))) (=every-sw-clause n)))))
 
     ; =every-prov-clause: Return every provision clauses referencing this property and using the given comparator
     (ag-rule
@@ -130,7 +130,7 @@
      (Property
       (lambda (n comparator)
         (filter (lambda (cl) (and (eq? comparator (->comparator cl)) (ast-subtype? cl 'ProvClause)
-                                  (eq? n (=real (->return-type cl))))) (append (=every-sw-clause n) (=every-hw-clause n))))))
+                                  (eq? n (=real (->ReturnType cl))))) (append (=every-sw-clause n) (=every-hw-clause n))))))
 
     ; =every-container: Returns a list of every pe that can run software on it
     (ag-rule every-container (Root (lambda (n) (filter (lambda (pe) (->container? (->type pe))) (=every-pe n)))))
@@ -179,8 +179,8 @@
     ; =lookup-clause: Given a property, return the first clause referencing this property at this resource/mode
     (ag-rule
      lookup-clause
-     (Resource (lambda (n prop) (ast-find-child (lambda (i cl) (eq? (=real prop) (=real (->return-type cl)))) (->ProvClause* n))))
-     (Mode (lambda (n prop) (ast-find-child (lambda (i cl) (eq? (=real prop) (=real (->return-type cl)))) (->Clause* n)))))
+     (Resource (lambda (n prop) (ast-find-child (lambda (i cl) (eq? (=real prop) (=real (->ReturnType cl)))) (->ProvClause* n))))
+     (Mode (lambda (n prop) (ast-find-child (lambda (i cl) (eq? (=real prop) (=real (->ReturnType cl)))) (->Clause* n)))))
 
     ; =lookup-property: Given the name of the property, resolves to a RealProperty. Always invoke on Root.
     (ag-rule
@@ -239,7 +239,7 @@
           (if (eq? (->type n) type) ; if n has correct type ...
               (let ([found-clause
                      (ast-find-child ; (1) ... then try to find a child in n ...
-                      (lambda (index clause) (string=? (->name (=real (->return-type clause))) name))
+                      (lambda (index clause) (string=? (->name (=real (->ReturnType clause))) name))
                       (->ProvClause* n))])
                 (if found-clause ; (1.q) if a child was found ...
                     found-clause ; (1.1) ... return it
@@ -253,7 +253,7 @@
     (ag-rule
      real
      (RealProperty (lambda (n) n))
-     (PropertyRef  (lambda (n) (=real (=lookup-property (<=root n) (ast-child 'refname n))))))
+     (PropertyRef  (lambda (n) (info n ", refname=" (ast-child 'refname n) ", hasParent=" (ast-has-parent? n)) (=real (=lookup-property (<=root n) (ast-child 'refname n))))))
 
     ; =req-comp-map: Returns a associate list, mapping required components to a list of implementations requiring that component
     (ag-rule
@@ -302,7 +302,7 @@
         (debug "search" name "in" (->name n))
         (ast-find-child
          (lambda (index clause)
-           (and (ast-subtype? clause subtype) (string=? (->name (=real (->return-type clause))) name)))
+           (and (ast-subtype? clause subtype) (string=? (->name (=real (->ReturnType clause))) name)))
          (->Clause* n)))))
 
     ; =search-pe: Search for a resource with the given name
diff --git a/ilp-measurement.scm b/ilp-measurement.scm
index d7b435edb9e01c2adf1a8088283b5e856fe5f08f..44dad7860bc024601a18020fa851e3f6375e721a 100644
--- a/ilp-measurement.scm
+++ b/ilp-measurement.scm
@@ -228,14 +228,14 @@
                                                        (->Property* (car (->* (->ResourceType* (->HWRoot ast)))))))]
           [find-prop-sw (lambda (name comp) (ast-find-child (lambda (i child) (string=? (->name (=real child)) name))
                                                             (->Property* comp)))]
-          [load (find-prop-hw load-name)]
+          [load (find-prop-hw pn-load)]
           [energy (find-prop-sw pn-energy (find-create-comp ast comp-nr))]
           [prev-p (and req-comp-nr (find-prop-sw (node-name "p" (list req-comp-nr)) (find-create-comp ast req-comp-nr)))]
           [this-p (find-prop-sw (node-name "p" (list comp-nr)) (find-create-comp ast comp-nr))]
-          [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec load comp-max-eq load-f)
-                                                (:ProvClause mquat-spec energy comp-max-eq energy-f)
-                                                (:ProvClause mquat-spec this-p comp-max-eq prov-f)
-                                                (and req-comp-nr (:ReqClause mquat-spec prev-p comp-max-eq prev-f))))]
+          [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec (:PropertyRef pn-load) comp-max-eq load-f)
+                                                (:ProvClause mquat-spec (:PropertyRef pn-energy) comp-max-eq energy-f)
+                                                (:ProvClause mquat-spec (:PropertyRef (->name this-p)) comp-max-eq prov-f)
+                                                (and req-comp-nr (:ReqClause mquat-spec (:PropertyRef (->name prev-p)) comp-max-eq prev-f))))]
           [new (:Mode mquat-spec (node-name "m" (list mode-nr impl-nr comp-nr)) clauses)])
      (rewrite-add (->Mode* impl) new) new))
  (define (comp-nr-of i) (ast-child-index (<=comp i)))
@@ -334,7 +334,7 @@
    (define (add-new-resource)
      (let* ([max-id (apply max (map (lambda (pe) (string->number (substring (->name pe) 2))) (=every-container ast)))]
             [first-clauses (->* (->ProvClause* (car (=every-container ast))))]
-            [new-clauses (map (lambda (cl) (make-prov (->return-type cl) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO
+            [new-clauses (map (lambda (cl) (make-prov (:PropertyRef (ast-child 'refname (->ReturnType cl))) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO
             [new-res (:Resource mquat-spec (string-append "r-" (number->string (+ 1 max-id))) rt online (list) new-clauses)])
         (rewrite-add (->SubResources (->HWRoot ast)) new-res)))
    (define (update-change outer steps)
@@ -376,7 +376,7 @@
    (define (add-new-resource)
      (let* ([max-id (apply max (map (lambda (pe) (string->number (substring (->name pe) 2))) (=every-container ast)))]
             [first-clauses (->* (->ProvClause* (car (=every-container ast))))]
-            [new-clauses (map (lambda (cl) (make-prov (->return-type cl) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO
+            [new-clauses (map (lambda (cl) (make-prov (:PropertyRef (ast-child 'refname (->ReturnType cl))) (->comparator cl) (rand 50 2 0))) first-clauses)] ;TODO
             [new-res (:Resource mquat-spec (string-append "r-" (number->string (+ 1 max-id))) rt online (list) new-clauses)])
         (rewrite-add (->SubResources (->HWRoot ast)) new-res)))
    (define (update-change steps)
diff --git a/ilp-test.scm b/ilp-test.scm
index fd75c9f7da26c7f56c0ad30c454c97d1c586180a..16942e46e5aa1b79afc19952a020365fa36f61d0 100644
--- a/ilp-test.scm
+++ b/ilp-test.scm
@@ -44,15 +44,15 @@
  
  (define (change-req-constraint ast name comparator new-value)
    (debug (->* (->Constraints (<=request ast))))
-   (let ([clause (ast-find-child (lambda (i child) (string=? (->name (=real (->return-type child))) name))
+   (let ([clause (ast-find-child (lambda (i child) (string=? (->name (=real (->ReturnType child))) name))
                                  (->Constraints (<=request ast)))])
      (rewrite-terminal 'value clause (lambda _ new-value))
      (rewrite-terminal 'comp clause comparator)))
  
  (define (change-req-mp-value ast new-value) (rewrite-terminal 'value (car (->* (->MetaParameter* (<=request ast)))) new-value))
  
- (define no-freq-hw-clauses (lambda _ (lambda (p) (if (string=? freq-name p) #f (list make-prov comp-eq (lambda _ 0.5))))))
- (define no-freq-sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? freq-name p) #f #t))))
+ (define no-freq-hw-clauses (lambda _ (lambda (p) (if (string=? pn-freq p) #f (list make-prov comp-eq (lambda _ 0.5))))))
+ (define no-freq-sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? pn-freq p) #f #t))))
  
  (define (run-test id-string)
 ;   (set!no-frequency) ; only use property load for system creation
@@ -597,7 +597,7 @@
    ; Normally only deployable on resource of type-0 (which is only res-2)
    (let* ([hw-types (lambda (res-name) (if (or (string=? res-name "r-1") (string=? res-name "r-3")) (cons 1 #t) #f))]
           [load-f (lambda (lomp target) (if (string=? (->name target) "type-1") 0.3 0.7))]
-          [sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? load-name p) (list make-req comp-max-eq load-f)
+          [sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? pn-load p) (list make-req comp-max-eq load-f)
                                                         ((no-freq-sw-clauses) p comp-nr))))]
           [ast (create-system 3 0 1 2 2 (list #f sw-clauses no-freq-hw-clauses hw-types))])
      (change-sw-prov ast pn-energy (+ 10 (/ id 1e3)) "m-1-1-1")
@@ -636,7 +636,7 @@
    (define (add-resource name status prototype parent)
      (let* ([type (->type prototype)]
             [cs (->* (->ProvClause* prototype))]
-            [new-cs (map (lambda (c) (:ProvClause mquat-spec (->return-type c) (->comparator c) (->value c))) cs)])
+            [new-cs (map (lambda (c) (:ProvClause mquat-spec (:PropertyRef (ast-child 'refname (->ReturnType c))) (->comparator c) (->value c))) cs)])
        (rewrite-add (->SubResources parent) (:Resource mquat-spec name type status (list) new-cs))))
    ; General description: New resources entering the system, enabling new configurations
    (let ([ast (create-system 2 0 1 1 2 (list #f no-freq-sw-clauses no-freq-hw-clauses #f))])
@@ -703,14 +703,14 @@
                                                             (->Property* (car (->* (->ResourceType* (->HWRoot ast)))))))]
               [find-prop-sw (lambda (name comp) (ast-find-child (lambda (i child) (string=? (->name (=real child)) name))
                                                                  (->Property* comp)))]
-              [load (find-prop-hw load-name)]
+              [load (find-prop-hw pn-load)]
               [energy (find-prop-sw pn-energy (find-create-comp comp-nr))]
               [prev-p (and req-comp-nr (find-prop-sw (node-name "p" (list req-comp-nr)) (find-create-comp req-comp-nr)))]
               [this-p (find-prop-sw (node-name "p" (list comp-nr)) (find-create-comp comp-nr))]
-              [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec load comp-max-eq load-f)
-                                                    (:ProvClause mquat-spec energy comp-max-eq energy-f)
-                                                    (:ProvClause mquat-spec this-p comp-max-eq prov-f)
-                                                    (and req-comp-nr (:ReqClause mquat-spec prev-p comp-max-eq prev-f))))]
+              [clauses (filter (lambda (c) c) (list (:ReqClause mquat-spec (:PropertyRef pn-load) comp-max-eq load-f)
+                                                    (:ProvClause mquat-spec (:PropertyRef pn-energy) comp-max-eq energy-f)
+                                                    (:ProvClause mquat-spec (:PropertyRef (->name this-p)) comp-max-eq prov-f)
+                                                    (and req-comp-nr (:ReqClause mquat-spec (:PropertyRef (->name prev-p)) comp-max-eq prev-f))))]
               [new (:Mode mquat-spec (node-name "m" (list mode-nr impl-nr comp-nr)) clauses)])
          (rewrite-add (->Mode* impl) new) new))
      (define (prov-obj val id) (+ val (/ id 1e3)))
@@ -767,7 +767,7 @@
           [name->type-nr (lambda (type-name) (string->number (substring type-name 5 (string-length type-name))))]
           [load-f (lambda (lomp target) (case (name->type-nr (->name target)) [(0) 0.2] [(1) 0.4] [(2) 0.7]
                                           [else (error "load-f" "wrong type" (->name target))]))]
-          [sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? load-name p) (list make-req comp-max-eq load-f)
+          [sw-clauses (lambda _ (lambda (p comp-nr) (if (string=? pn-load p) (list make-req comp-max-eq load-f)
                                                         ((no-freq-sw-clauses) p comp-nr))))]
           [ast (create-system 30 3 1 1 2 (list #f sw-clauses no-freq-hw-clauses hw-types))])
      (change-sw-prov ast pn-energy (+ 10 (/ id 1e3)) "m-1-1-1")
@@ -854,11 +854,11 @@
         (info "reqs" req-cls (length req-cls))
         (info "provs" prov-cls (length prov-cls))
         (for-each (lambda (cl) (info "comp" (eq? comp-max-eq (->comparator cl)) "sub" (ast-subtype? cl 'ReqClause)
-                                     "prop" (eq? p2 (=real (->return-type cl))))) (=every-sw-clause ast))
+                                     "prop" (eq? p2 (=real (->ReturnType cl))))) (=every-sw-clause ast))
         ; "clone" req-clauses cls in p1 and change new clauses to target new property
-        (for-each (lambda (cl) (rewrite-add (<- cl) (:ReqClause mquat-spec new-p (->comparator cl) (->value cl)))) req-cls)
+        (for-each (lambda (cl) (rewrite-add (<- cl) (:ReqClause mquat-spec (:PropertyRef (->name new-p)) (->comparator cl) (->value cl)))) req-cls)
         ; "clone" prov-clauses in p2
-        (for-each (lambda (cl) (rewrite-add (<- cl) (:ProvClause mquat-spec new-p (->comparator cl) (->value cl)))) prov-cls)
+        (for-each (lambda (cl) (rewrite-add (<- cl) (:ProvClause mquat-spec (:PropertyRef (->name new-p)) (->comparator cl) (->value cl)))) prov-cls)
         ; adjust values, s.t. one impl fulfills req for first property only, second impl fulfills req for second property only
         (change-sw-req ast "p-2" comp-max-eq 10 "m-1-1-1" "m-1-2-1")
         (change-sw-req ast "new-p-2" comp-max-eq 10 "m-1-1-1" "m-1-2-1")
diff --git a/ilp.scm b/ilp.scm
index acd934793947db366eda4c1789b78ec0ac37a11d..f0a10639685075232dcc32942aa38e1574204f64 100644
--- a/ilp.scm
+++ b/ilp.scm
@@ -238,7 +238,7 @@
 ;           (if (and (ast-subtype? clause clausetype) (eq? (->comparator clause) comparator))
 ;               (fold-left ; fold over pe
 ;                (lambda (inner pe)
-;                  (add-to-al inner (=real (->return-type clause))
+;                  (add-to-al inner (=real (->ReturnType clause))
 ;                             (list (=eval-on clause pe) (=ilp-binvar-deployed (<<- clause) pe))))
 ;;                             (=ilp-eval-binvar clause pe)))
 ;                result (=every-container n))
@@ -257,7 +257,7 @@
            (if (and (ast-subtype? clause clausetype) (eq? (->comparator clause) comparator))
                (fold-left ; fold over pe
                 (lambda (inner pe)
-                  (add-to-al inner (=real (->return-type clause))
+                  (add-to-al inner (=real (->ReturnType clause))
                              (list (=eval-on clause pe) (=ilp-binvar-deployed n pe))))
                 result (=every-container n))
                result))
@@ -269,7 +269,7 @@
         (fold-left
          (lambda (result clause)
            (if (eq? (->comparator clause) comparator)
-               (add-to-al result (=real (->return-type clause)) (list (=eval-on clause #f) "")) ;use arbitrary target #f
+               (add-to-al result (=real (->ReturnType clause)) (list (=eval-on clause #f) "")) ;use arbitrary target #f
                result))
          (list) (->* (->Constraints n))))))
 
@@ -283,9 +283,9 @@
 ;     (Comp
 ;      (lambda (n) ; → all properties required in here. ([prop (clause ... )] ... )
 ;        (fold-left
-;;         (lambda (result clause) (let ([prop (=real (->return-type clause))])
+;;         (lambda (result clause) (let ([prop (=real (->ReturnType clause))])
 ;;                                   (if (member prop result) result (cons prop result))))
-;         (lambda (result clause) (add-to-al result (=real (->return-type clause)) clause))
+;         (lambda (result clause) (add-to-al result (=real (->ReturnType clause)) clause))
 ;         (list) (=every-clause-of n)))))
 ;
 ;    (ag-rule
@@ -345,12 +345,12 @@
      (Clause
       (lambda (n pe)
         (att-value-compute 'ilp-eval-binvar)
-;        (let ([real-return-type (=real (->return-type n))])
+;        (let ([real-ReturnType (=real (->ReturnType n))])
         (debug "ilp-eval-binvar" n (->name pe))
-;          (if (or (eq? (->type pe) (<<- real-return-type))
-;                  (ast-subtype? (<<- real-return-type) 'HWRoot))
+;          (if (or (eq? (->type pe) (<<- real-ReturnType))
+;                  (ast-subtype? (<<- real-ReturnType) 'HWRoot))
         (list (=eval-on n (->type pe)) (=ilp-binvar-deployed (<<- n) pe))
-;              (begin (debug "not suitable" real-return-type pe) (list))))
+;              (begin (debug "not suitable" real-ReturnType pe) (list))))
         ))) ;empty pair if not a suitable clause
 
     (ag-rule
@@ -361,7 +361,7 @@
      (Clause
       (lambda (n)
         (att-value-compute 'required-hw-properties)
-        (let ([prop (=real (->return-type n))])
+        (let ([prop (=real (->ReturnType n))])
           (if (and (ast-subtype? n 'ReqClause) (=hw? prop))
               (list (list (->comparator n) prop)) (list))))))
 
@@ -373,7 +373,7 @@
      (Clause
       (lambda (n)
         (att-value-compute 'required-hw-clauses)
-        (let ([prop (=real (->return-type n))])
+        (let ([prop (=real (->ReturnType n))])
           (if (and (ast-subtype? n 'ReqClause) (=hw? prop))
               (list (list (cons (->comparator n) prop) (list n))) (list))))))
 
diff --git a/mquat.scm b/mquat.scm
index a66a906eca960900abbc102aa67d3fa8e0bda2fd..9a72fc8067b3e07876b59d1dd7736f7449948d97 100644
--- a/mquat.scm
+++ b/mquat.scm
@@ -56,13 +56,13 @@
 ;; Software entities
 (define (make-mode workers particles)
   (:Mode ms (string-append "KLD-" (number->string workers) "-" (number->string particles))
-         (list (:ProvClause ms sample-energy comp-max-eq (make-energy-f workers particles))
-               (:ProvClause ms precision comp-min-eq (make-precision-f workers particles))
-               (:ProvClause ms sample-response-time comp-max-eq (make-rt-f workers particles))
+         (list (:ProvClause ms (:PropertyRef ms energy) comp-max-eq (make-energy-f workers particles))
+               (:ProvClause ms (:PropertyRef (->name precision)) comp-min-eq (make-precision-f workers particles))
+               (:ProvClause ms (:PropertyRef ms response-time) comp-max-eq (make-rt-f workers particles))
                )))
 (define modes (map make-mode (list 1 1 1 3 3 3 5 5 5) (list 300 500 700 300 500 700 300 500 700)))
 (define kld (:Impl ms "KLD" modes (list) #f #f))
-(define Sample (:Comp ms "Sampling" (list kld) #f (list precision sample-response-time sample-energy)))
+(define Sample (:Comp ms "Sampling" (list kld) #f (list precision (:PropertyRef ms response-time) (:PropertyRef ms energy))))
 
 (define ast
   (:Root ms
@@ -82,12 +82,12 @@
 (define (r id) (string-append "r-" (number->string id)))
 
 (define (update-request-constraints property property-value comparator)
-      (let ([clause? (ast-find-child (lambda (i n) (eq? (=real property) (=real (->return-type n))))
+      (let ([clause? (ast-find-child (lambda (i n) (eq? (=real property) (=real (->ReturnType n))))
                                      (->Constraints (<=request ast)))])
         (if (and property-value (> 0 property-value))
             (if clause? (rewrite-terminal 'value clause? (lambda _ property-value)) ; rewrite existing clause
                 ; add new clause
-                (rewrite-add (->Constraints (<=request ast)) (:ReqClause ms property comparator (lambda _ property-value))))
+                (rewrite-add (->Constraints (<=request ast)) (:ReqClause ms (:PropertyRef (->name (=real property))) comparator (lambda _ property-value))))
             (when clause? (rewrite-delete clause?))))) ; delete existing clause
 
 (define (update-request-objective objective)
diff --git a/properties.py b/properties.py
index f64854ab03ab669372dc3a478fd686dbb3e9579e..355521e24abceb23f37dcc3a7e91f59f7e503aaf 100644
--- a/properties.py
+++ b/properties.py
@@ -65,12 +65,14 @@ def confirm(question, default_val = False):
     prompt = question
     if isinstance(default_val, bool):
         prompt += ' [{0}]'.format('Y/n' if default_val else 'y/N')
+    elif isinstance(default_val,int):
+        prompt += ' [{0}]'.format(default_val)
     answer = raw_input(prompt + ' ')
     if answer == '':
         answer = default_val
     if isinstance(default_val, bool):
         return answer in ('y','Y','yes','Yes',True)
-    if isinstance(default_val,int):
+    elif isinstance(default_val,int):
         return int(answer)
     return answer
 
diff --git a/scheme.properties b/scheme.properties
index 23f04c9e4567d80ee97a622d772c5332f7f4f285..f249126e1b985f01c8996bfd6603b3e619513712 100644
--- a/scheme.properties
+++ b/scheme.properties
@@ -3,7 +3,7 @@
 
 timing             = 0
 log.info           = 1
-log.debug          = 0
+log.debug          = 1
 measure.lp.write   = 0
 measure.profiling  = 1
 measure.flush      = 0
diff --git a/ui.scm b/ui.scm
index d3d449a12d9b187bd65123975533fa06a2ab7f7c..d408d47356a5fe47ad5032a1c2f3f4bbbf0c5759 100644
--- a/ui.scm
+++ b/ui.scm
@@ -16,12 +16,12 @@
  (define (clauses-to-list loc)
    (fold-left
     (lambda (result clause)
-      (let ([returnType (->name (=real (->return-type clause)))]
+      (let ([returnType (->name (=real (->ReturnType clause)))]
             [evalValue (=eval clause)]
             [compName (comp->rev-string (->comparator clause))])
         (cons
          (if (ast-subtype? clause 'ProvClause) (list returnType compName evalValue)
-             (list returnType 'on (name-or-type (<<- (=real (->return-type clause))))
+             (list returnType 'on (name-or-type (<<- (=real (->ReturnType clause))))
                    compName evalValue 'currently: (=actual-value clause)))
          result)))
     (list) loc))