diff --git a/aosstower/tower_quicklooks/create_quicklook.py b/aosstower/tower_quicklooks/create_quicklook.py
index 8c4100e2464ef24a416e62b476a6c3f60904858e..c1d871221bc053610ce2fb52a50771dbfe72ce49 100644
--- a/aosstower/tower_quicklooks/create_quicklook.py
+++ b/aosstower/tower_quicklooks/create_quicklook.py
@@ -66,7 +66,7 @@ class PlotMaker(object):
         new_ticks = np.arange(ymin, (ymin + delta * num_plots), delta)
         return new_ticks
 
-    def get_ylabel(self, is_subplot=False):
+    def _get_ylabel(self, is_subplot=False):
         y_label = TITLES.get(self.name, self.name.replace('_', ' ').title())
         if is_subplot:
             return None
@@ -74,16 +74,25 @@ class PlotMaker(object):
             return "{} ({})".format(y_label, self.units)
         return y_label
 
-    def create_plot(self, frame, fig, start_time=None, end_time=None,
-                    is_subplot=None, shared_x=None, title=None):
-        """
+    def _set_ylabel(self, ax, is_subplot=False):
+        y_label = self._get_ylabel(is_subplot)
+        if y_label and not is_subplot:
+            ax.set_ylabel(y_label)
 
-        :param frame:
-        :param fig:
-        :param is_subplot: None or (num plots, num columns, num_rows)
-        :param shared_x:
-        :return:
-        """
+    def _call_plot(self, frame, ax):
+        lines = ax.plot(frame.index, frame, 'k')
+        return lines
+
+    def _set_ylim(self, frame, ax):
+        ymin = np.floor(frame.min().min())
+        ymax = np.ceil(frame.max().max())
+        if ymin == ymax:
+            ax.set_ylim(ymin, ymax + 0.1)
+        else:
+            ax.set_ylim(ymin, ymax)
+        return ymin, ymax
+
+    def _set_title(self, frame, fig, ax, start_time=None, end_time=None, title=None, is_subplot=None):
         if start_time is None:
             start_time = frame.index[0].to_pydatetime()
         if end_time is None:
@@ -92,37 +101,62 @@ class PlotMaker(object):
             title = self.get_title(frame, is_subplot, start_time, end_time)
 
         if is_subplot:
-            ax = fig.add_subplot(*is_subplot, sharex=shared_x)
             ax.set_title(title, x=0.5, y=get_subtitle_location(is_subplot[0]), fontsize=8)
         else:
-            ax = fig.add_subplot(111, sharex=shared_x)
             fig.suptitle(title, fontsize=13)
-            y_label = self.get_ylabel(is_subplot)
-            if y_label:
-                ax.set_ylabel(y_label)
-        plt.sca(ax)
-
-        # get the min for each column then combine them assuming we can
-        specific_frame = frame[[x for x in frame.columns if x in self.deps]]
-        ymin = np.floor(specific_frame.min().min())
-        ymax = np.ceil(specific_frame.max().max())
 
-        ax.plot(specific_frame.index, specific_frame, 'k')
-        if ymin == ymax:
-            ax.set_ylim(ymin, ymax + 0.1)
+    def _get_axes(self, fig, is_subplot, shared_x=None):
+        if is_subplot:
+            ax = fig.add_subplot(*is_subplot, sharex=shared_x)
         else:
-            ax.set_ylim(ymin, ymax)
+            ax = fig.add_subplot(111, sharex=shared_x)
+        plt.sca(ax)
+        return ax
 
+    def _set_xlabel(self, ax, is_subplot):
+        if not is_subplot:
+            ax.set_xlabel('Time (UTC)')
+
+    def _set_yticks(self, ax, ymin, ymax, is_subplot):
         if is_subplot:
             new_ticks = self.get_yticks(ymin, ymax, is_subplot[0])
             ax.get_yaxis().get_major_ticks()[-1].set_visible(False)
             ax.set_yticks(new_ticks)
-        else:
-            ax.set_xlabel('Time (UTC)')
+
+    def create_plot(self, frame, fig, start_time=None, end_time=None,
+                    is_subplot=None, shared_x=None, title=None):
+        """
+
+        :param frame:
+        :param fig:
+        :param is_subplot: None or (num plots, num columns, num_rows)
+        :param shared_x:
+        :return:
+        """
+        ax = self._get_axes(fig, is_subplot, shared_x)
+        self._set_title(frame, fig, ax,
+                        start_time=start_time, end_time=end_time,
+                        title=title, is_subplot=is_subplot)
+
+        # get the min for each column then combine them assuming we can
+        specific_frame = frame[[x for x in frame.columns if x in self.deps]]
+        lines = self._call_plot(specific_frame, ax)
+        ymin, ymax = self._set_ylim(specific_frame, ax)
+
+        self._set_yticks(ax, ymin, ymax, is_subplot)
+        self._set_xlabel(ax, is_subplot)
+        self._set_ylabel(ax, is_subplot)
 
         return ax
 
 
+class TDPlotMaker(PlotMaker):
+    def _call_plot(self, frame, ax):
+        air_temp = self.deps[0]
+        dewpoint = self.deps[1]
+        ax.plot(frame.index, frame[air_temp], 'r', frame.index, frame[dewpoint], 'g')
+
+
 class MeteorogramPlotMaker(PlotMaker):
     def __init__(self, name, dependencies, plot_deps=None, title=None):
         self.plot_deps = plot_deps
@@ -153,9 +187,11 @@ class MeteorogramPlotMaker(PlotMaker):
             if idx == 0:
                 shared_x = ax
             if idx != num_plots - 1:
+                print("Disabling")
                 # Disable the x-axis ticks so we don't interfere with other subplots
-                ax.get_xaxis().get_major_ticks()[-1].set_visible(False)
-                ax.get_xaxis().get_major_ticks()[0].set_visible(False)
+                ax.set_xticklabels([''] * len(ax.get_xticklabels()))
+                # ax.get_xaxis().get_major_ticks()[-1].set_visible(False)
+                # ax.get_xaxis().get_major_ticks()[0].set_visible(False)
         ax.set_xlabel('Time (UTC)')
         fig.subplots_adjust(hspace=0, bottom=0.125)
 
@@ -167,7 +203,7 @@ PLOT_TYPES = {
     'meteorogram': MeteorogramPlotMaker('meteorogram',
                                         ('air_temp', 'dewpoint', 'rh', 'wind_speed', 'wind_dir', 'accum_precip'),
                                         ('td', 'rh', 'wind_speed', 'wind_dir', 'accum_precip')),
-    'td': PlotMaker('td', ('air_temp', 'dewpoint'), units="°C"),  # air_temp and dewpoint in one plot
+    'td': TDPlotMaker('td', ('air_temp', 'dewpoint'), units="°C"),  # air_temp and dewpoint in one plot
     'wind_dir': PlotMaker('wind_dir', ('wind_dir',), units='°'),  # special tick labels
     'rh': PlotMaker('rh', ('rh',), units='%'),
     'air_temp': PlotMaker('air_temp', ('air_temp',), units='°C'),