diff --git a/pykat/__init__.py b/pykat/__init__.py
index 086773cd4b91b86a47d2176b6900fe2c8bcad0ea..b256447fffe90bf87756efbd575e25d033fa4dad 100644
--- a/pykat/__init__.py
+++ b/pykat/__init__.py
@@ -26,7 +26,7 @@ import pykat.components as components
 import pykat.detectors as detectors
 import pykat.commands as commands
 
-from pykat.optics.gaussian_beams import beam_param
+from pykat.optics.gaussian_beams import BeamParam
 
 from pykat.plotting import init_pykat_plotting
 
diff --git a/pykat/commands.py b/pykat/commands.py
index b144773f54223c4fcf64280b0e9f7e3dc4a2130b..90576ca505e127b5b011abc07a6a74922b41df5a 100644
--- a/pykat/commands.py
+++ b/pykat/commands.py
@@ -21,7 +21,7 @@ from pykat.structs import *
 from numpy import min, max
 from pykat.param import Param, putter
 from collections import namedtuple
-from pykat.optics.gaussian_beams import beam_param
+from pykat.optics.gaussian_beams import BeamParam
 
 
 
@@ -297,22 +297,22 @@ class gauss(object):
         
         if not values[0].endswith("*"):
             if len(values) == 6:
-                gp = beam_param(kat.lambda0, w0=values[-2], z=values[-1])
+                gp = BeamParam(kat.lambda0, w0=values[-2], z=values[-1])
             elif len(values) == 8:
-                gpx = beam_param(kat.lambda0, w0=values[-4], z=values[-3])
-                gpy = beam_param(kat.lambda0, w0=values[-2], z=values[-1])
+                gpx = BeamParam(kat.lambda0, w0=values[-4], z=values[-3])
+                gpy = BeamParam(kat.lambda0, w0=values[-2], z=values[-1])
         elif values[0].endswith("*"):
             if len(values) == 6:
-                gp = beam_param(kat.lambda0, z=values[-2], zr=values[-1])
+                gp = BeamParam(kat.lambda0, z=values[-2], zr=values[-1])
             elif len(values) == 8:
-                gpx = beam_param(kat.lambda0, z=values[-4], zr=values[-3])
-                gpy = beam_param(kat.lambda0, z=values[-2], zr=values[-1])
+                gpx = BeamParam(kat.lambda0, z=values[-4], zr=values[-3])
+                gpy = BeamParam(kat.lambda0, z=values[-2], zr=values[-1])
         elif values[0].endswith("**"):
             if len(values) == 6:
-                gp = beam_param(kat.lambda0, w=values[-2], rc=values[-1])
+                gp = BeamParam(kat.lambda0, w=values[-2], rc=values[-1])
             elif len(values) == 8:
-                gpx = beam_param(kat.lambda0, w=values[-4], rc=values[-3])
-                gpy = beam_param(kat.lambda0, w=values[-2], rc=values[-1])
+                gpx = BeamParam(kat.lambda0, w=values[-4], rc=values[-3])
+                gpy = BeamParam(kat.lambda0, w=values[-2], rc=values[-1])
         else:
             raise pkex.BasePyKatException("Unexpected ending to gauss command '{0}'".format(text))
             
diff --git a/pykat/finesse.py b/pykat/finesse.py
index 9b65e60d0cb654420c48ba5fac2ab49a536a5347..147063d0e1bdbc7331bcf7175ecd816688ab109d 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -325,7 +325,7 @@ def GUILength(L):
     """
     return L # * ( 40 * erfc(L/400.0) + 0.01)
             
-class katRun(object):
+class KatRun(object):
     def __init__(self):
         self.runtime = None
         self.StartDateTime = datetime.datetime.now()
@@ -579,7 +579,7 @@ class katRun(object):
         
         return fig
         
-    def savekatRun(self, filename):
+    def saveKatRun(self, filename):
         with open(filename,'w') as outfile:
             pickle.dump(self, outfile)
     
@@ -618,7 +618,7 @@ class katRun(object):
         else:
             raise  pkex.BasePyKatException("No output by the name '{0}' found in the output".format(str(value)))
       
-class katRun2D(object):
+class KatRun2D(object):
     def __init__(self):
         self.runtime = None
         self.startDateTime = datetime.datetime.now()
@@ -1546,7 +1546,7 @@ class kat(object):
     def run(self, plot=None, save_output=False, save_kat=False, kat_name=None, cmd_args=None, getTraceData=False, rethrowExceptions=False, usePipe=True):
         """ 
         Runs the current simulation setup that has been built thus far.
-        It returns a katRun or katRun2D object which is populated with the various
+        It returns a KatRun or KatRun2D object which is populated with the various
         data from the simulation run.
         plot (string) - Sets gnuterm for plotting
         save_output (bool) - if true does not delete out file
@@ -1597,9 +1597,9 @@ class kat(object):
             if self.verbose: print ("Running kat - Started at " + str(datetime.datetime.fromtimestamp(start)))
             
             if hasattr(self, "x2axis") and self.noxaxis == False:
-                r = katRun2D()
+                r = KatRun2D()
             else:
-                r = katRun()
+                r = KatRun()
                 
             r.yaxis = self.yaxis
             
@@ -1782,8 +1782,8 @@ class kat(object):
                                         qx = spqx[0].split("=")[1].replace('i','j').replace(' ','') 
                                         qy = spqy[0].split("=")[1].replace('i','j').replace(' ','') 
                                         
-                                        traceData[-1][node_name] = (pykat.beam_param(q=complex(qx), wavelength=self.lambda0),
-                                                                    pykat.beam_param(q=complex(qy), wavelength=self.lambda0),
+                                        traceData[-1][node_name] = (pykat.BeamParam(q=complex(qx), wavelength=self.lambda0),
+                                                                    pykat.BeamParam(q=complex(qy), wavelength=self.lambda0),
                                                                     component_name)
                             
                         finally:
diff --git a/pykat/gauss/__init__.py b/pykat/gauss/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/pykat/node_network.py b/pykat/node_network.py
index b3de2411c5f91593fcd8eee095d039f4084689e5..135972b9d502229ad79490c494173832d665d846 100644
--- a/pykat/node_network.py
+++ b/pykat/node_network.py
@@ -20,7 +20,7 @@ import pykat.external.six as six
 
 from pykat.components import Component, NodeGaussSetter
 from pykat.detectors import BaseDetector as Detector
-from pykat.optics.gaussian_beams import beam_param
+from pykat.optics.gaussian_beams import BeamParam
 from copy import deepcopy
 
 id___ = 0
@@ -554,11 +554,11 @@ class Node(object):
         self.__q_comp = component
         
         if len(args) == 1:  
-            self.__q_x = beam_param(self._network.kat.lambda0, q=args[0])
-            self.__q_y = beam_param(self._network.kat.lambda0, q=args[0])
+            self.__q_x = BeamParam(self._network.kat.lambda0, q=args[0])
+            self.__q_y = BeamParam(self._network.kat.lambda0, q=args[0])
         elif len(args) == 2:
-            self.__q_x = beam_param(self._network.kat.lambda0, q=args[0])
-            self.__q_y = beam_param(self._network.kat.lambda0, q=args[1])
+            self.__q_x = BeamParam(self._network.kat.lambda0, q=args[0])
+            self.__q_y = BeamParam(self._network.kat.lambda0, q=args[1])
         else:
             raise pkex.BasePyKatException("Must specify either 1 Gaussian beam parameter or 2 for astigmatic beams")
                 
diff --git a/pykat/optics/ABCD.py b/pykat/optics/ABCD.py
index b743f740a48591b5f3f431ce7635799c1df8f704..992aee41d521629939e45b89481d890820db35ee 100644
--- a/pykat/optics/ABCD.py
+++ b/pykat/optics/ABCD.py
@@ -1,8 +1,8 @@
 import numpy as np
-from pykat.optics.gaussian_beams import beam_param
+from pykat.optics.gaussian_beams import BeamParam
 
 def apply(ABCD, q1, n1, n2):
-    return beam_param(nr=n2, q=n2 * (ABCD[0,0] * q1/float(n1) + ABCD[0,1]) / (ABCD[1,0] * q1/float(n1) + ABCD[1,1]))
+    return BeamParam(nr=n2, q=n2 * (ABCD[0,0] * q1/float(n1) + ABCD[0,1]) / (ABCD[1,0] * q1/float(n1) + ABCD[1,1]))
 
 def mirror_trans(n1, n2, Rc):
     return np.matrix([[1.0,0.0],[(n2-n1)/float(Rc),1.0]])
diff --git a/pykat/optics/gaussian_beams.py b/pykat/optics/gaussian_beams.py
index eef4786cb2201ec6296dd2259fe5f5bc04eb10c3..1a1b534c415825c36f1cd51219678649f3e875c4 100644
--- a/pykat/optics/gaussian_beams.py
+++ b/pykat/optics/gaussian_beams.py
@@ -14,30 +14,34 @@ from scipy.special import hermite
 from pykat.math.jacobi import jacobi
 from pykat.SIfloat import SIfloat
 
-class gauss_param(object):
+class gauss_param(BeamParam):
+    pass
+
+class beam_param(BeamParam):
+    pass
+        
+class BeamParam(object):
     """
-    Use beam_param instead, will be the future name of this object.
-    
-    Gaussian beam complex parameter
+    Gaussian beam complex parameter.
     
-    beam_param is effectively a complex number with extra
+    BeamParam is effectively a complex number with extra
     functionality to determine beam parameters.
     
     Defaults to 1064e-9m for wavelength and refractive index 1
     usage:
-        q = gauss_param(w0=w0, z=z)
-        q = gauss_param(z=z, zr=zr)
-        q = gauss_param(w=w, rc=rc)
-        q = gauss_param(q=a) # where a is a complex number
+        q = BeamParam(w0=w0, z=z)
+        q = BeamParam(z=z, zr=zr)
+        q = BeamParam(w=w, rc=rc)
+        q = BeamParam(q=a) # where a is a complex number
         
         or change default wavelength and refractive index with:
         
-        q = gauss_param(wavelength, nr, w0=w0, zr=zr)
+        q = BeamParam(wavelength, nr, w0=w0, zr=zr)
     """
     
     def __init__(self, wavelength=1064e-9, nr=1, *args, **kwargs):
-        if self.__class__ != beam_param:
-            warnings.warn("Name changed. Use beam_param instead of gauss_param.")
+        if self.__class__ != BeamParam:
+            warnings.warn("Name changed. Use BeamParam instead of gauss_param or beam_param.")
             
         self.__q = None
         self.__lambda = SIfloat(wavelength)
@@ -195,7 +199,7 @@ class gauss_param(object):
         return abs(4*q1.imag * q2.imag)/abs(q1.conjugate()-q2)**2
         
     def conjugate(self):
-        return beam_param(self.__lambda, self.__nr, self.__q.conjugate())
+        return BeamParam(self.__lambda, self.__nr, self.__q.conjugate())
     
     def __abs__(self):
         return abs(complex(self.__q))
@@ -207,7 +211,7 @@ class gauss_param(object):
         return str(self.__q)
     
     def __mul__(self, a):
-        return beam_param(self.__lambda, self.__nr, self.__q * complex(a))
+        return BeamParam(self.__lambda, self.__nr, self.__q * complex(a))
     
     def __imul__(self, a):
         self.__q *= complex(a)
@@ -216,7 +220,7 @@ class gauss_param(object):
     __rmul__ = __mul__
     
     def __add__(self, a):
-        return beam_param(self.__lambda, self.__nr, self.__q + complex(a))
+        return BeamParam(self.__lambda, self.__nr, self.__q + complex(a))
     
     def __iadd__(self, a):
         self.__q += complex(a)
@@ -225,27 +229,27 @@ class gauss_param(object):
     __radd__ = __add__
     
     def __sub__(self, a):
-        return beam_param(self.__lambda, self.__nr, self.__q - complex(a))
+        return BeamParam(self.__lambda, self.__nr, self.__q - complex(a))
     
     def __isub__(self, a):
         self.__q -= complex(a)
         return self
         
     def __rsub__(self, a):
-        return beam_param(self.__lambda, self.__nr, complex(a) - self.__q)
+        return BeamParam(self.__lambda, self.__nr, complex(a) - self.__q)
     
     def __div__(self, a):
-        return beam_param(self.__lambda, self.__nr, self.__q / complex(a))
+        return BeamParam(self.__lambda, self.__nr, self.__q / complex(a))
     
     def __idiv__(self, a):
         self.__q /= complex(a)
         return self
     
     def __pow__(self, q):
-        return beam_param(self.__lambda, self.__nr, self.__q**q)
+        return BeamParam(self.__lambda, self.__nr, self.__q**q)
 
     def __neg__(self, q):
-        return beam_param(self.__lambda, self.__nr, -self.__q)
+        return BeamParam(self.__lambda, self.__nr, -self.__q)
         
     def __eq__(self, q):
         if q is None:
@@ -266,15 +270,12 @@ class gauss_param(object):
     # reverse beam direction 
     def reverse(self):
         self.__q = -1.0 * self.__q.real + 1j * self.__q.imag
-
-
-class beam_param(gauss_param):
-    pass
-
+        
+        
 class HG_mode(object):
     """ Hermite-Gauss mode profile. Example usage:
     import pykat.optics.gaussian_beams as gb
-    qx=gb.beam_param(w0=1e-3,z=0)
+    qx=gb.BeamParam(w0=1e-3,z=0)
     beam=gb.HG_mode(qx,n=2,m=0)
     beam.plot()
     """    
@@ -317,12 +318,12 @@ class HG_mode(object):
             return (self._qx.q, self._qy.q)
     @q.setter
     def q(self, value):
-        if value.__class__ == beam_param:
+        if value.__class__ == BeamParam:
             self._qx = copy.deepcopy(value)
             self._qy = copy.deepcopy(value)
         else:
-            self._qx = beam_param(q=complex(value))
-            self._qy = beam_param(q=complex(value))
+            self._qx = BeamParam(q=complex(value))
+            self._qy = BeamParam(q=complex(value))
     
     @property
     def qx(self):
@@ -330,10 +331,10 @@ class HG_mode(object):
         
     @qx.setter
     def qx(self, value):
-        if value.__class__ == beam_param:
+        if value.__class__ == BeamParam:
             self._qx = copy.deepcopy(value)
         else:
-            self._qx = beam_param(q=complex(value))
+            self._qx = BeamParam(q=complex(value))
     
     @property
     def qy(self):
@@ -341,10 +342,10 @@ class HG_mode(object):
         
     @qy.setter
     def qy(self, value):
-        if value.__class__ == beam_param:
+        if value.__class__ == BeamParam:
             self._qy = copy.deepcopy(value)
         else:
-            self._qy = beam_param(q=complex(value))
+            self._qy = BeamParam(q=complex(value))
     
     @property
     def constant_x(self):
diff --git a/pykat/optics/knm.py b/pykat/optics/knm.py
index c36aaf5b44979f1496990799a1b29885567a223f..115c6013b6f5cd33d5f348dcb944988fa7a5c62e 100644
--- a/pykat/optics/knm.py
+++ b/pykat/optics/knm.py
@@ -1,5 +1,5 @@
 from itertools import combinations_with_replacement as combinations
-from pykat.optics.gaussian_beams import beam_param, HG_mode
+from pykat.optics.gaussian_beams import BeamParam, HG_mode
 from pykat.exceptions import BasePyKatException
 from pykat.optics.romhom import u_star_u
 from pykat.external.progressbar import ProgressBar, ETA, Percentage, Bar
diff --git a/pykat/optics/romhom.py b/pykat/optics/romhom.py
index 392523581af8502b4999b75e23ab326d86efb004..f45db37f42bab4f353e047cdfc66045feae3a03e 100644
--- a/pykat/optics/romhom.py
+++ b/pykat/optics/romhom.py
@@ -13,7 +13,7 @@ import itertools
 from copy import copy
 from pykat.external.progressbar import ProgressBar, ETA, Percentage, Bar
 from itertools import combinations_with_replacement as combinations
-from pykat.optics.gaussian_beams import beam_param
+from pykat.optics.gaussian_beams import BeamParam
 from scipy.linalg import inv
 from math import factorial
 from pykat.math.hermite import *