diff --git a/opi/ds345.bob b/opi/ds345.bob
index 14e85705558028c3fd88aa64969379269754ef6d..783b85167f3732f409a9e94174b8705b8049719d 100644
--- a/opi/ds345.bob
+++ b/opi/ds345.bob
@@ -21,7 +21,7 @@
   </widget>
   <widget type="label" version="2.0.0">
     <name>Label_1</name>
-    <text>Some Value:</text>
+    <text>Offset</text>
     <y>50</y>
   </widget>
   <widget type="textupdate" version="2.0.0">
diff --git a/opi/test.bob b/opi/test.bob
index c49243a3ab3194d6440c6705ea3b213891f4ca69..c6a2db270d760cd1b89127a764140ecac3d49e6b 100644
--- a/opi/test.bob
+++ b/opi/test.bob
@@ -1,87 +1,658 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <display version="2.0.0">
-  <name>Helmholtz Coils</name>
+  <name>Heater Demo</name>
+  <macros>
+    <P>$(USER)</P>
+    <tooltip>Hello!</tooltip>
+  </macros>
+  <width>700</width>
+  <height>700</height>
+  <actions>
+  </actions>
   <widget type="label" version="2.0.0">
-    <name>Label</name>
-    <class>TITLE</class>
-    <text>Helmholtz Coils</text>
-    <x use_class="true">0</x>
-    <y use_class="true">0</y>
-    <width>550</width>
-    <height>31</height>
-    <font use_class="true">
+    <name>Label_1</name>
+    <text>Room</text>
+    <x>12</x>
+    <y>50</y>
+    <width>40</width>
+    <height>16</height>
+    <font>
+      <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+      </font>
+    </font>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="scaledslider" version="2.0.0">
+    <name>Scaled Slider</name>
+    <pv_name>$(P):heat_V</pv_name>
+    <x>442</x>
+    <y>70</y>
+    <width>52</width>
+    <height>142</height>
+    <horizontal>false</horizontal>
+    <background_color>
+      <color red="240" green="240" blue="240">
+      </color>
+    </background_color>
+    <major_tick_step_hint>50</major_tick_step_hint>
+    <show_hihi>false</show_hihi>
+    <show_high>false</show_high>
+    <show_low>false</show_low>
+    <show_lolo>false</show_lolo>
+    <actions>
+    </actions>
+    <maximum>110.0</maximum>
+    <limits_from_pv>false</limits_from_pv>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_3</name>
+    <text>Isolation Factor:</text>
+    <x>132</x>
+    <y>282</y>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_4</name>
+    <text>Heat Capacity:</text>
+    <x>132</x>
+    <y>322</y>
+    <width>92</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_5</name>
+    <text>Sensor:</text>
+    <x>132</x>
+    <y>362</y>
+    <width>49</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="combo" version="2.0.0">
+    <name>Menu Button</name>
+    <pv_name>$(P):sensor</pv_name>
+    <x>132</x>
+    <y>380</y>
+    <width>101</width>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+  </widget>
+  <widget type="textupdate" version="2.0.0">
+    <name>Text Update_3</name>
+    <pv_name>$(P):tank</pv_name>
+    <x>132</x>
+    <y>260</y>
+    <horizontal_alignment>1</horizontal_alignment>
+    <vertical_alignment>1</vertical_alignment>
+    <wrap_words>false</wrap_words>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="textupdate" version="2.0.0">
+    <name>Text Update_4</name>
+    <pv_name>$(P):heat_V</pv_name>
+    <x>442</x>
+    <y>230</y>
+    <width>61</width>
+    <horizontal_alignment>1</horizontal_alignment>
+    <vertical_alignment>1</vertical_alignment>
+    <wrap_words>false</wrap_words>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="textupdate" version="2.0.0">
+    <name>Text Update_5</name>
+    <pv_name>$(P):heat_Pwr</pv_name>
+    <x>442</x>
+    <y>270</y>
+    <width>61</width>
+    <horizontal_alignment>1</horizontal_alignment>
+    <vertical_alignment>1</vertical_alignment>
+    <wrap_words>false</wrap_words>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="textentry" version="3.0.0">
+    <name>Text Input</name>
+    <pv_name>$(P):room</pv_name>
+    <x>12</x>
+    <y>260</y>
+    <width>61</width>
+    <actions>
+    </actions>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+  </widget>
+  <widget type="textentry" version="3.0.0">
+    <name>Text Input_1</name>
+    <pv_name>$(P):tank_clc.D</pv_name>
+    <x>132</x>
+    <y>300</y>
+    <format>1</format>
+    <show_units>false</show_units>
+    <actions>
+    </actions>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+  </widget>
+  <widget type="textentry" version="3.0.0">
+    <name>Text Input_2</name>
+    <pv_name>$(P):tank_clc.E</pv_name>
+    <x>132</x>
+    <y>340</y>
+    <format>1</format>
+    <show_units>false</show_units>
+    <actions>
+    </actions>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_5</name>
+    <text>Water Tank</text>
+    <x>132</x>
+    <y>50</y>
+    <width>76</width>
+    <height>16</height>
+    <font>
+      <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+      </font>
+    </font>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_6</name>
+    <text>Setpoint</text>
+    <x>302</x>
+    <y>50</y>
+    <width>58</width>
+    <height>15</height>
+    <visible>false</visible>
+    <font>
+      <font family="Arial" style="BOLD" size="11.881188118811881">
+      </font>
+    </font>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_6</name>
+    <text>Fishtank Heater Demo for user $(USER)</text>
+    <x>12</x>
+    <y>3</y>
+    <width>364</width>
+    <height>25</height>
+    <font>
       <font name="Header 1" family="Liberation Sans" style="BOLD" size="22.0">
       </font>
     </font>
-    <foreground_color use_class="true">
-      <color name="Text" red="0" green="0" blue="0">
+    <foreground_color>
+      <color red="20" green="67" blue="227">
       </color>
     </foreground_color>
-    <transparent use_class="true">true</transparent>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+    <tooltip>$(pv_name)
+$(pv_value)</tooltip>
   </widget>
   <widget type="label" version="2.0.0">
-    <name>Label_1</name>
-    <text>Magnetic Field</text>
+    <name>Label_8</name>
+    <text>Temperature:</text>
+    <x>132</x>
+    <y>242</y>
+    <width>85</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_14</name>
+    <text>Controller</text>
+    <x>302</x>
+    <y>300</y>
+    <width>67</width>
+    <height>16</height>
+    <font>
+      <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+      </font>
+    </font>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_15</name>
+    <text>Temperature:</text>
+    <x>14</x>
+    <y>242</y>
+    <width>85</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_16</name>
+    <text>Voltage:</text>
+    <x>442</x>
+    <y>212</y>
+    <width>52</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_17</name>
+    <text>Power:</text>
+    <x>442</x>
+    <y>254</y>
+    <width>44</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="picture" version="2.0.0">
+    <name>Image</name>
+    <file>fish.gif</file>
+    <x>340</x>
+    <y>116</y>
+    <width>80</width>
+    <height>70</height>
+    <actions>
+    </actions>
+    <rules>
+      <rule name="Hide" prop_id="visible" out_exp="false">
+        <exp bool_exp="abs(pv0)&gt;3">
+          <value>false</value>
+        </exp>
+        <pv_name>$(P):error</pv_name>
+      </rule>
+    </rules>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_19</name>
+    <text>Heater</text>
+    <x>442</x>
     <y>50</y>
+    <width>44</width>
+    <height>16</height>
+    <font>
+      <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+      </font>
+    </font>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_9</name>
+    <text>Prop. Gain</text>
+    <x>442</x>
+    <y>314</y>
+    <width>67</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_11</name>
+    <text>Error</text>
+    <x>446</x>
+    <y>362</y>
+    <width>32</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="textentry" version="3.0.0">
+    <name>Text Input_4</name>
+    <pv_name>$(P):PID.C</pv_name>
+    <x>518</x>
+    <y>330</y>
+    <width>51</width>
+    <height>21</height>
+    <actions>
+    </actions>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Status</name>
+    <text>Status</text>
+    <x>442</x>
+    <y>420</y>
+    <width>201</width>
+    <height>21</height>
+    <transparent>false</transparent>
+    <vertical_alignment>1</vertical_alignment>
+    <actions>
+    </actions>
+    <scripts>
+      <script file="scripts/Analyze.py">
+        <pv_name>$(P):PID</pv_name>
+        <pv_name>sim://sine(-10,10,10,0.1)</pv_name>
+      </script>
+    </scripts>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_20</name>
+    <text>Status:</text>
+    <x>440</x>
+    <y>404</y>
+    <width>44</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_12</name>
+    <text>Err. Integral</text>
+    <x>518</x>
+    <y>362</y>
+    <width>74</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
   </widget>
   <widget type="textupdate" version="2.0.0">
-    <name>Field in Gauss</name>
-    <pv_name>F71hallprobe:p1:Gauss</pv_name>
-    <x>30</x>
-    <y>70</y>
-    <width>160</width>
-    <precision>5</precision>
+    <name>Text Update_4</name>
+    <pv_name>$(P):error</pv_name>
+    <x>446</x>
+    <y>378</y>
+    <width>61</width>
+    <horizontal_alignment>1</horizontal_alignment>
+    <vertical_alignment>1</vertical_alignment>
+    <wrap_words>false</wrap_words>
+    <actions>
+    </actions>
   </widget>
   <widget type="label" version="2.0.0">
-    <name>Label_2</name>
-    <class>COMMENT</class>
-    <text>Some comment.</text>
-    <x>270</x>
-    <y>80</y>
-    <width>140</width>
-    <font use_class="true">
-      <font name="Comment" family="Liberation Sans" style="ITALIC" size="14.0">
+    <name>Label_7</name>
+    <text>Output:</text>
+    <x>302</x>
+    <y>320</y>
+    <width>46</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_13</name>
+    <text>Integral Limit</text>
+    <x>610</x>
+    <y>362</y>
+    <width>81</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="textupdate" version="2.0.0">
+    <name>Text Update_3</name>
+    <pv_name>$(P):integral</pv_name>
+    <x>518</x>
+    <y>380</y>
+    <width>61</width>
+    <horizontal_alignment>1</horizontal_alignment>
+    <vertical_alignment>1</vertical_alignment>
+    <wrap_words>false</wrap_words>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="textentry" version="3.0.0">
+    <name>Text Input_5</name>
+    <pv_name>$(P):integral.C</pv_name>
+    <x>610</x>
+    <y>380</y>
+    <width>61</width>
+    <height>21</height>
+    <background_color>
+      <color name="Read_Background" red="240" green="240" blue="240">
+      </color>
+    </background_color>
+    <actions>
+    </actions>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+  </widget>
+  <widget type="textentry" version="3.0.0">
+    <name>Text Input_3</name>
+    <pv_name>$(P):PID.A</pv_name>
+    <x>442</x>
+    <y>330</y>
+    <width>51</width>
+    <height>21</height>
+    <actions>
+    </actions>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_10</name>
+    <text>Integral Gain</text>
+    <x>518</x>
+    <y>314</y>
+    <width>81</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_21</name>
+    <text>Heater
+is
+on</text>
+    <x>518</x>
+    <y>66</y>
+    <width>46</width>
+    <height>44</height>
+    <font>
+      <font family="Arial" style="BOLD" size="11.881188118811881">
       </font>
     </font>
-    <foreground_color use_class="true">
-      <color name="Text" red="0" green="0" blue="0">
+    <foreground_color>
+      <color red="255" green="0" blue="0">
       </color>
     </foreground_color>
-    <transparent use_class="true">true</transparent>
-    <wrap_words use_class="true">true</wrap_words>
+    <horizontal_alignment>1</horizontal_alignment>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+    <rules>
+      <rule name="show" prop_id="visible" out_exp="false">
+        <exp bool_exp="pv0 &lt; 50">
+          <value>false</value>
+        </exp>
+        <pv_name>$(USER):heat_V</pv_name>
+      </rule>
+    </rules>
+  </widget>
+  <widget type="databrowser" version="2.0.0">
+    <name>Data Browser</name>
+    <file>strip.plt</file>
+    <macros>
+      <user>$(USER)</user>
+    </macros>
+    <y>438</y>
+    <width>697</width>
+    <height>259</height>
+    <show_toolbar>false</show_toolbar>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_18</name>
+    <text>Setpoint</text>
+    <x>282</x>
+    <y>50</y>
+    <width>56</width>
+    <height>16</height>
+    <font>
+      <font name="Default Bold" family="Liberation Sans" style="BOLD" size="14.0">
+      </font>
+    </font>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="scaledslider" version="2.0.0">
+    <name>Scaled Slider_1</name>
+    <pv_name>$(P):setpoint</pv_name>
+    <x>282</x>
+    <y>66</y>
+    <width>58</width>
+    <height>200</height>
+    <horizontal>false</horizontal>
+    <show_hihi>false</show_hihi>
+    <show_high>false</show_high>
+    <show_low>false</show_low>
+    <show_lolo>false</show_lolo>
+  </widget>
+  <widget type="bool_button" version="2.0.0">
+    <name>Boolean Button</name>
+    <x>672</x>
+    <y>250</y>
+    <width>1</width>
+    <height>1</height>
+  </widget>
+  <widget type="radio" version="2.0.0">
+    <name>Menu Button_1</name>
+    <pv_name>$(USER):heat_V.OMSL</pv_name>
+    <x>518</x>
+    <y>130</y>
+    <width>154</width>
+    <height>50</height>
+    <tooltip>$(USER):heat_V.OMSL
+VString[No PV, 1969/12/31 19:00:00.000]</tooltip>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+    <items>
+      <item>'item' = 'Item 0'</item>
+    </items>
+  </widget>
+  <widget type="progressbar" version="2.0.0">
+    <name>Gauge</name>
+    <pv_name>$(USER):PID</pv_name>
+    <x>302</x>
+    <y>336</y>
+    <width>118</width>
+    <height>30</height>
+    <actions>
+    </actions>
+    <tooltip>$(USER):PID
+VString[No PV, 1969/12/31 19:00:00.000]</tooltip>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+  </widget>
+  <widget type="textupdate" version="2.0.0">
+    <name>Gauge_1</name>
+    <pv_name>$(USER):PID</pv_name>
+    <x>302</x>
+    <y>380</y>
+    <width>118</width>
+    <height>30</height>
+    <actions>
+    </actions>
+    <tooltip>$(USER):PID
+VString[No PV, 1969/12/31 19:00:00.000]</tooltip>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
   </widget>
-  <widget type="tank" version="2.0.0">
+  <widget type="thermometer" version="2.0.0">
     <name>Tank</name>
-    <pv_name>ksN5700A:Meas:Power</pv_name>
-    <x>650</x>
-    <y>100</y>
-    <width>100</width>
-    <height>190</height>
-    <empty_color>
-      <color red="192" green="192" blue="192" alpha="143">
+    <pv_name>$(P):tank</pv_name>
+    <x>134</x>
+    <y>70</y>
+    <width>98</width>
+    <height>171</height>
+    <fill_color>
+      <color red="0" green="0" blue="255">
       </color>
-    </empty_color>
-    <limits_from_pv>false</limits_from_pv>
+    </fill_color>
+    <actions>
+    </actions>
+    <rules>
+      <rule name="Color" prop_id="fill_color" out_exp="false">
+        <exp bool_exp="pv0&gt;50">
+          <value>
+            <color name="MAJOR" red="255" green="0" blue="0">
+            </color>
+          </value>
+        </exp>
+        <exp bool_exp="pv0&gt;40">
+          <value>
+            <color red="255" green="179" blue="102">
+            </color>
+          </value>
+        </exp>
+        <exp bool_exp="pv0&gt;20">
+          <value>
+            <color red="0" green="179" blue="102">
+            </color>
+          </value>
+        </exp>
+        <pv_name>$(P):tank</pv_name>
+      </rule>
+    </rules>
   </widget>
-  <widget type="databrowser" version="2.0.0">
-    <name>Data Browser</name>
-    <file>helmholtz_stripchart.plt</file>
-    <y>460</y>
-    <width>780</width>
-    <height>120</height>
-  </widget>
-  <widget type="action_button" version="3.0.0">
-    <name>Action Button</name>
-    <actions>
-      <action type="write_pv">
-        <pv_name>SRSDS345test:Trigger</pv_name>
-        <value>1</value>
-        <description>do ramp</description>
-      </action>
-    </actions>
-    <x>320</x>
-    <y>190</y>
-    <width>80</width>
-    <height>60</height>
+  <widget type="thermometer" version="2.0.0">
+    <name>Tank_1</name>
+    <pv_name>$(P):room</pv_name>
+    <x>12</x>
+    <y>70</y>
+    <width>98</width>
+    <height>171</height>
+    <fill_color>
+      <color red="0" green="0" blue="255">
+      </color>
+    </fill_color>
+    <actions>
+    </actions>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label</name>
+    <text>Requires fishtank IOC</text>
+    <x>12</x>
+    <y>28</y>
+    <width>685</width>
+    <font>
+      <font name="Comment" family="Liberation Sans" style="ITALIC" size="14.0">
+      </font>
+    </font>
+  </widget>
+  <widget type="textentry" version="3.0.0">
+    <name>Text Input_6</name>
+    <pv_name>$(P):PID.E</pv_name>
+    <x>610</x>
+    <y>330</y>
+    <width>51</width>
+    <height>21</height>
+    <actions>
+    </actions>
+    <border_alarm_sensitive>false</border_alarm_sensitive>
+  </widget>
+  <widget type="label" version="2.0.0">
+    <name>Label_22</name>
+    <text>Diff. Gain</text>
+    <x>610</x>
+    <y>314</y>
+    <width>59</width>
+    <height>16</height>
+    <auto_size>true</auto_size>
+    <actions>
+    </actions>
   </widget>
 </display>
diff --git a/setup.sh b/setup.sh
index 7a0963085196cb156e6b86973a6cc199a1f8f981..03f323c0b7c0b70eab7c536a81f6472f79346a45 100644
--- a/setup.sh
+++ b/setup.sh
@@ -34,11 +34,10 @@ export PATH=$EPICSEXTENSIONS/bin/$EPICS_HOST_ARCH:$PATH
 export LD_LIBRARY_PATH=$EPICSEXTENSIONS/lib/$EPICS_HOST_ARCH:$LD_LIBRARY_PATH
 
 
-
 # Epics Display Manager stuff
 
-#export QT_PLUGIN_PATH=/mnt/old_home/whit/projects/epics/extensions/lib/linux-x86_64
-#export CAQTDM_DISPLAY_PATH=$EPICS_BASE/dm
+export QT_PLUGIN_PATH=/opt/epics/extensions/lib/linux-x86_64
+export CAQTDM_DISPLAY_PATH=/opt/epics/dm
 
 export EDMFILES=$EPICS_EXTENSIONS/ext_pref/edm
 export EDMOBJECTS=$EPICS_EXTENSIONS/ext_pref/edm