diff --git a/geomagio/algorithm/AverageAlgorithm.py b/geomagio/algorithm/AverageAlgorithm.py
index fe970d63d67828576589416913e242a17db5a0ac..065e674ac9c3fb73ffaebb8e81b63fa04782019d 100644
--- a/geomagio/algorithm/AverageAlgorithm.py
+++ b/geomagio/algorithm/AverageAlgorithm.py
@@ -53,13 +53,13 @@ class AverageAlgorithm(Algorithm):
         min_count_start=None,
         min_count_end=None,
     ):
-        Algorithm.__init__(self)
+        Algorithm.__init__(self, inchannels=[channel])
         self._npts = -1
         self._stt = -1
         self._stats = None
         self.scales = scales
         self.observatories = observatories
-        self.outchannel = channel
+        self.inchannel = channel
         self.outlocation = location
         self.min_count = min_count
         self.min_count_start = min_count_start
@@ -135,11 +135,11 @@ class AverageAlgorithm(Algorithm):
         out_stream:
             new stream object containing the averaged values and available observatories.
         """
-        self.observatories = self.observatories or [t.stats.station for t in timeseries]
+        observatories = self.observatories or [t.stats.station for t in timeseries]
 
-        self.outchannel = self.outchannel or timeseries[0].stats.channel
+        inchannel = self.inchannel or timeseries[0].stats.channel
 
-        self.outlocation = self.outlocation or timeseries[0].stats.location
+        outlocation = self.outlocation or timeseries[0].stats.location
 
         min_count = self.min_count or len(self.observatories)
         min_count_start = self.min_count_start or timeseries[0].stats.starttime
@@ -148,7 +148,7 @@ class AverageAlgorithm(Algorithm):
         scale_values = self.scales or ([1] * len(timeseries))
         lat_corr = {}
         i = 0
-        for obs in self.observatories:
+        for obs in observatories:
             new_obs = {str(obs): scale_values[i]}
             lat_corr.update(new_obs)
             i += 1
@@ -159,7 +159,7 @@ class AverageAlgorithm(Algorithm):
         # initialize array for data to be appended
         combined = []
         # loop over stations
-        for obsy in self.observatories:
+        for obsy in observatories:
 
             # lookup latitude correction factor, default = 1.0
             if obsy in lat_corr:
@@ -194,9 +194,9 @@ class AverageAlgorithm(Algorithm):
         # create first output trace metadata
         average_stats = obspy.core.Stats()
         average_stats.station = "USGS"
-        average_stats.channel = self.outchannel
+        average_stats.channel = inchannel
         average_stats.network = "NT"
-        average_stats.location = self.outlocation
+        average_stats.location = outlocation
         average_stats.starttime = timeseries[0].stats.starttime
         average_stats.npts = timeseries[0].stats.npts
         average_stats.delta = timeseries[0].stats.delta
@@ -260,13 +260,14 @@ class AverageAlgorithm(Algorithm):
         arguments: Namespace
             parsed command line arguments
         """
+        Algorithm.configure(self, arguments)
 
-        self.observatories = arguments.observatory
-        if arguments.outchannels:
-            if len(arguments.outchannels) > 1:
-                raise AlgorithmException("Only 1 channel can be specified")
-            self.outchannel = arguments.outchannels[0]
+        if self._inchannels:
+            if len(self._inchannels) > 1:
+                raise AlgorithmException("Only 1 input channel can be specified")
+            self.inchannel = self._inchannels
 
+        self.observatories = arguments.observatory
         self.scales = arguments.average_observatory_scale
         if self.scales:
             if len(self.observatories) != len(self.scales):