diff --git a/ansible/eval-haskell.fi.muni.cz.yml b/ansible/eval-haskell.fi.muni.cz.yml
index 2a118137e8b1f5732574bf847adb5b3a56cddd32..891d3bd49e105b2112eb4a19ad7e42be005917eb 100644
--- a/ansible/eval-haskell.fi.muni.cz.yml
+++ b/ansible/eval-haskell.fi.muni.cz.yml
@@ -153,13 +153,20 @@
           cmd: darcs get https://paradise.fi.muni.cz/~xstill/src/frag/
         when: not frag_chekout.stat.exists
 
-#       - name: Update frag
-#         command:
-#           chdir: /var/frag/frag
-#           cmd: '{{item}}'
-#         loop:
-#           - darcs pull -a
-#           - env CXX=clang++ PWD=/var/frag/frag make
+      - name: Update frag darcs
+        command:
+          chdir: /var/frag/frag
+          cmd: 'darcs pull -a'
+
+      - name: "Gib config for frag"
+        copy:
+          src: frag/gib.local
+          dest: /var/frag/frag/gib/local
+
+      - name: Update frag build
+        command:
+          chdir: /var/frag/frag
+          cmd: make
 
       - name: Builder user
         user:
@@ -283,19 +290,21 @@
 
       - name: IB015 evals' progs
         copy:
-          src: '/var/frag/frag/eval-{{item[1]}}'
+          src: '/var/frag/frag/_build/eval-{{item[1]}}'
           dest: '/var/frag/ib015_eval_{{item[0]}}/{{item[1]}}'
           remote_src: True
           mode: 0555
         loop: '{{range(ib015_workers) | product(frag_eval_tools) | list}}'
+        register: ib015_ev_progs
 
       - name: IB015 eval deamons
         copy:
-          src: '/var/frag/frag/frag-eval'
+          src: '/var/frag/frag/_build/frag-eval'
           dest: '/var/frag/ib015_eval_{{item}}/'
-          remote_src: True
+          remote_src: true
           mode: 0555
         loop: '{{range(ib015_workers)}}'
+        register: ib015_eval
 
       - name: Eval service
         get_url:
@@ -303,10 +312,11 @@
           dest: /etc/systemd/system/frag-eval@.service
         register: eval_service
 
-      - name: Enable evals
+      - name: Enable IB015 evals
         systemd:
           name: 'frag-eval@ib015_eval_{{item}}'
-          enabled: True
+          enabled: true
+          state: '{{"re" if ib015_eval.changed or ib015_ev_progs.changed else ""}}started'
           daemon_reload: '{{eval_service.changed}}'
         loop: '{{range(ib015_workers)}}'
 
@@ -367,6 +377,32 @@
         loop: '{{range(ib015_workers)}}'
 
       # TODO: deduplicate
+      - name: IB016 evals' progs
+        copy:
+          src: '/var/frag/frag/_build/eval-{{item[1]}}'
+          dest: '/var/frag/ib016_eval_{{item[0]}}/{{item[1]}}'
+          remote_src: true
+          mode: 0555
+        loop: '{{range(ib016_workers) | product(frag_eval_tools) | list}}'
+        register: ib016_ev_progs
+
+      - name: IB016 eval deamons
+        copy:
+          src: '/var/frag/frag/_build/frag-eval'
+          dest: '/var/frag/ib016_eval_{{item}}/'
+          remote_src: true
+          mode: 0555
+        loop: '{{range(ib016_workers)}}'
+        register: ib016_eval
+
+      - name: Enable IB016 evals
+        systemd:
+          name: 'frag-eval@ib016_eval_{{item}}'
+          enabled: true
+          state: '{{"re" if ib016_eval.changed or ib016_ev_progs.changed else ""}}started'
+          daemon_reload: '{{eval_service.changed}}'
+        loop: '{{range(ib016_workers)}}'
+
       - name: .cabal exits?
         stat:
           path: '/var/frag/ib016_eval_{{item}}/.cabal'