diff --git a/AmpScan/ampVis.py b/AmpScan/ampVis.py
index b921856fdec6b793ac5776d051f8ea54f205c9c9..457f393f5f44339a3404b9e7180b5c0901e1815a 100644
--- a/AmpScan/ampVis.py
+++ b/AmpScan/ampVis.py
@@ -64,7 +64,7 @@ class vtkRenWin(vtk.vtkRenderWindow):
         Set the scalar bar within the window based upon a look-up table defined
         within an actor
         
-        Parmeters
+        Parameters
         ---------
         actor: ampActor
             The actor from which the lut is read from, the actor must have the
diff --git a/GUIs/AmpScanGUI.py b/GUIs/AmpScanGUI.py
index 0c6d06c798acbfd30a9b459c7d12e4fc4ddffea1..db9610a845798515752084c44bcb40f30859ec6c 100644
--- a/GUIs/AmpScanGUI.py
+++ b/GUIs/AmpScanGUI.py
@@ -9,10 +9,11 @@ from AmpScan.pressSens import pressSense
 from PyQt5.QtCore import QPoint, QSize, Qt, QTimer, QRect, pyqtSignal
 from PyQt5.QtGui import (QColor, QFontMetrics, QImage, QPainter, QIcon,
                          QOpenGLVersionProfile)
-from PyQt5.QtWidgets import (QAction, QApplication, QGridLayout,
-                             QMainWindow, QMessageBox, QComboBox,
+from PyQt5.QtWidgets import (QAction, QApplication, QGridLayout, QHBoxLayout,
+                             QMainWindow, QMessageBox, QComboBox, QButtonGroup,
                              QOpenGLWidget, QFileDialog,QLabel,QPushButton,
-                             QSlider, QWidget, QTableWidget, QTableWidgetItem)
+                             QSlider, QWidget, QTableWidget, QTableWidgetItem,
+                             QAbstractButton)
 
         
 class AmpScanGUI(QMainWindow):
@@ -102,21 +103,61 @@ class AmpScanGUI(QMainWindow):
         self.alCont = AlignControls(self.filesDrop, self)
         self.alCont.show()
         self.alCont.icp.clicked.connect(self.runICP)
-#        self.renWin.setnumViewports(2)
-#        self.renWin.setView(view=[-1, 0, 0], viewport=1)
-#        self.renWin.setProjection(True, 0)
-#        self.renWin.setProjection(True, 1)
-##        self.renWin.render(self.AmpObj.actors, dispActors=['limb',])
-##        self.renWin.render(self.AmpObj.actors, dispActors=['socket',],
-##                              viewport=1)
-#        self.renWin.renderActors([self.AmpObj.actor, self.socket.actor],
-#                                 viewport=0)
-#        self.renWin.renderActors([self.AmpObj.actor, self.socket.actor],
-#                                 viewport=1)
-#        self.AmpObj.actor.setColor([1.0, 0.0, 0.0])
-#        self.AmpObj.actor.setOpacity(0.5)
-#        self.socket.actor.setColor([0.0, 0.0, 1.0])
-#        self.socket.actor.setOpacity(0.5)
+        self.alCont.xrotButton.buttonClicked[QAbstractButton].connect(self.rotatex)
+        self.alCont.yrotButton.buttonClicked[QAbstractButton].connect(self.rotatey)
+        self.alCont.zrotButton.buttonClicked[QAbstractButton].connect(self.rotatez)
+        self.alCont.xtraButton.buttonClicked[QAbstractButton].connect(self.transx)
+        self.alCont.ytraButton.buttonClicked[QAbstractButton].connect(self.transy)
+        self.alCont.ztraButton.buttonClicked[QAbstractButton].connect(self.transz)
+        
+    def rotatex(self, button):
+        moving = str(self.alCont.moving.currentText())
+        ang = [float(button.text()), 0, 0]
+        self.files[moving].rotateAng(ang, 'deg')
+        self.files[moving].actor.setVert(self.files[moving].vert)
+        self.renWin.Render()
+#        print('rotate x by %.1f' % ang)
+
+    def rotatey(self, button):
+        moving = str(self.alCont.moving.currentText())
+        ang = [0, float(button.text()), 0]
+        self.files[moving].rotateAng(ang, 'deg')
+        self.files[moving].actor.setVert(self.files[moving].vert)
+        self.renWin.Render()
+#        print('rotate y by %.1f' % ang)
+
+    def rotatez(self, button):
+        moving = str(self.alCont.moving.currentText())
+        ang = [0, 0, float(button.text())]
+        self.files[moving].rotateAng(ang, 'deg')
+        self.files[moving].actor.setVert(self.files[moving].vert)
+        self.renWin.Render()
+
+    def transx(self, button):
+        moving = str(self.alCont.moving.currentText())
+        ang = [float(button.text()), 0, 0]
+        self.files[moving].translate(ang)
+        self.files[moving].actor.setVert(self.files[moving].vert)
+        self.renWin.Render()
+#        print('rotate x by %.1f' % ang)
+
+    def transy(self, button):
+        moving = str(self.alCont.moving.currentText())
+        ang = [0, float(button.text()), 0]
+        self.files[moving].translate(ang)
+        self.files[moving].actor.setVert(self.files[moving].vert)
+        self.renWin.Render()
+#        print('rotate y by %.1f' % ang)
+
+    def transz(self, button):
+        moving = str(self.alCont.moving.currentText())
+        ang = [0, 0, float(button.text())]
+        self.files[moving].translate(ang)
+        self.files[moving].actor.setVert(self.files[moving].vert)
+        self.renWin.Render()
+#        print('rotate z by %.1f' % ang)
+#        self.files[moving].rotateAng(ang, 'deg')
+
     
     def runICP(self):
         
@@ -172,12 +213,7 @@ class AmpScanGUI(QMainWindow):
         self.regCont.show()
         self.regCont.reg.clicked.connect(self.runRegistration)
         
-#        self.renWin.setnumViewports(1)
-#        self.renWin.setProjection()
-#        self.RegObj = registration(self.socket, self.AmpObj)
-#        self.RegObj.addActor(CMap=self.AmpObj.CMapN2P)
-#        self.renWin.renderActors([self.RegObj.actor,])
-#        self.renWin.setScalarBar(self.RegObj.actor)
+
     
     def analyse(self):
         """
@@ -348,6 +384,28 @@ class AlignControls(QMainWindow):
         self.layout.addWidget(self.static, 0, 1)
         self.layout.addWidget(self.moving, 1, 1)
         self.layout.addWidget(self.icp, 2, 0, 1, -1)
+        rots = ['x', 'y', 'z']
+        vals = ['-5', '-0.5', '+0.5', '+5']
+        for i, r in enumerate(rots):
+            setattr(self, r + 'rotBox', QHBoxLayout())
+            setattr(self, r + 'rotButton', QButtonGroup())
+            lab = QLabel(r + ' rotation')
+            getattr(self, r + 'rotBox').addWidget(lab)
+            for v in vals:
+                button = QPushButton(v)
+                getattr(self, r + 'rotBox').addWidget(button)
+                getattr(self, r + 'rotButton').addButton(button)
+            self.layout.addLayout(getattr(self, r + 'rotBox'), i+3, 0, 1, -1)
+        for i, r in enumerate(rots):
+            setattr(self, r + 'traBox', QHBoxLayout())
+            setattr(self, r + 'traButton', QButtonGroup())
+            lab = QLabel(r + ' translation')
+            getattr(self, r + 'traBox').addWidget(lab)
+            for v in vals:
+                button = QPushButton(v)
+                getattr(self, r + 'traBox').addWidget(button)
+                getattr(self, r + 'traButton').addButton(button)
+            self.layout.addLayout(getattr(self, r + 'traBox'), i+6, 0, 1, -1)
         self.main.setLayout(self.layout)
         self.setWindowTitle("Alignment Manager")
         self.getNames()
@@ -388,7 +446,7 @@ class RegistrationControls(QMainWindow):
         self.layout.addWidget(self.target, 1, 1)
         self.layout.addWidget(self.reg, 2, 0, 1, -1)
         self.main.setLayout(self.layout)
-        self.setWindowTitle("Alignment Manager")
+        self.setWindowTitle("Registration Manager")
         self.getNames()
     
     def getNames(self):
@@ -402,6 +460,7 @@ class RegistrationControls(QMainWindow):
 
 if __name__ == "__main__":
     app = QApplication(sys.argv)
+#    mainWin = AlignControls([''])
     mainWin = AmpScanGUI()
     mainWin.show()
     sys.exit(app.exec_())
\ No newline at end of file
diff --git a/docs/AmpScanlogo.ico b/docs/AmpScanlogo.ico
new file mode 100644
index 0000000000000000000000000000000000000000..0dbfa7fbd29bc1c5e788aa7ad1c011a671f5b886
Binary files /dev/null and b/docs/AmpScanlogo.ico differ
diff --git a/docs/conf.py b/docs/conf.py
index a3019a430bdf8190e57b533338de44f99d36ec67..681ec118e7d90e8f9424db7fc78ab2af722aa0db 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -21,7 +21,7 @@ sys.path.insert(0, os.path.abspath('.'))
 # -- Project information -----------------------------------------------------
 
 project = 'AmpScan'
-copyright = '2018, Joshua Steer'
+copyright = '2018, AmpScan developers'
 author = 'Oliver Stocks'
 
 # The short X.Y version
@@ -65,6 +65,8 @@ nbsphinx_kernel_name = 'python3'
 
 html_logo = "AmpScanlogosmall.svg"
 
+html_favicon = "AmpScanlogo.ico"
+
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
 
diff --git a/docs/exampleDemos.rst b/docs/exampleDemos.rst
index bcc4b4176c6f25cfb47d002749d664b6ec7a6d89..a70f229ddef0eb0b6b09744251fffcb1e640c905 100644
--- a/docs/exampleDemos.rst
+++ b/docs/exampleDemos.rst
@@ -16,5 +16,4 @@ via ``import AmpScan`` by navigating to the root directory and running
    examples/TESTnb
    examples/Workflow1-Importstl
    examples/Workflow2-ImportTetMesh
-   examples/Workflow3-AnalyseAmpObject
-   
+   examples/WorkFlow3-AnalyseAmpObject
diff --git a/docs/examples/WorkFlow3-AnalyseAmpObject.ipynb b/docs/examples/WorkFlow3-AnalyseAmpObject.ipynb
index 44fe5de51e0adf46d695cca74befca29b89ff797..8f72989095b9a7c8779b400b4919b68cefdc479c 100644
--- a/docs/examples/WorkFlow3-AnalyseAmpObject.ipynb
+++ b/docs/examples/WorkFlow3-AnalyseAmpObject.ipynb
@@ -83,9 +83,9 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python [conda env:python3]",
+   "display_name": "Python [conda env:py3]",
    "language": "python",
-   "name": "conda-env-python3-py"
+   "name": "conda-env-py3-py"
   },
   "language_info": {
    "codemirror_mode": {
@@ -97,7 +97,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.6.4"
+   "version": "3.5.5"
   }
  },
  "nbformat": 4,