diff --git a/Examples/PDBPicking/PBDPickingExample.cpp b/Examples/PDBPicking/PBDPickingExample.cpp
index 1ac84867005d0214224d8b1d5f5adc02facf476c..c7f8b0eef6d44f663f13d292ef53ec34c8d4934c 100644
--- a/Examples/PDBPicking/PBDPickingExample.cpp
+++ b/Examples/PDBPicking/PBDPickingExample.cpp
@@ -38,7 +38,11 @@
 #include "imstkRenderMaterial.h"
 #include "imstkScene.h"
 #include "imstkSceneManager.h"
+
 #include "imstkLaparoscopicToolController.h"
+#include "imstkSceneObjectController.h"
+
+
 #include "imstkVisualModel.h"
 #include "imstkVTKViewer.h"
 
@@ -195,22 +199,21 @@ main()
     auto    lowerSurfMesh = MeshIO::read<SurfaceMesh>(iMSTK_DATA_ROOT "/laptool/lower.obj");
     auto    pivotSurfMesh = MeshIO::read<SurfaceMesh>(iMSTK_DATA_ROOT "/laptool/pivot.obj");
 
-    // Object
     imstkNew<Capsule>          geomShaft;
     geomShaft->setLength(20.0);
-    geomShaft->setPosition(Vec3d(0.0, 0.0, 10.0));
     geomShaft->setRadius(1.0);
     geomShaft->setOrientationAxis(Vec3d(0.0, 0.0, 1.0));
     imstkNew<CollidingObject> objShaft("ShaftObject");
-    objShaft->setVisualGeometry(pivotSurfMesh);
+    objShaft->setVisualGeometry(geomShaft);
     objShaft->setCollidingGeometry(geomShaft);
-    objShaft->setCollidingToVisualMap(std::make_shared<IsometricMap>(geomShaft, pivotSurfMesh));
+    //objShaft->setCollidingToVisualMap(std::make_shared<IsometricMap>(geomShaft, pivotSurfMesh));
     scene->addSceneObject(objShaft);
 
-    imstkNew<Sphere>          geomUpperJaw(Vec3d(0.0, 0.0, -25.0), 2.0);
-    //geomUpperJaw->setTranslation(Vec3d(0.0, 0.0, -25.0));
-    //geomUpperJaw->setOrientationAxis(Vec3d(1.0, 0.0, 0.0));
-    
+    imstkNew<Capsule>          geomUpperJaw;
+    geomUpperJaw->setLength(30.0);
+    //geomUpperJaw->setPosition(Vec3d(0.0, 0.0, -12.5));
+    geomUpperJaw->setRadius(1.0);
+    geomUpperJaw->setOrientationAxis(Vec3d(0.0, 0.0, 1.0));
     imstkNew<CollidingObject> objUpperJaw("UpperJawObject");
     objUpperJaw->setVisualGeometry(geomUpperJaw);
     objUpperJaw->setCollidingGeometry(geomUpperJaw);
@@ -218,7 +221,7 @@ main()
     //objUpperJaw->setCollidingToVisualMap(mapUpperJaw);
     scene->addSceneObject(objUpperJaw);
     
-    imstkNew<Sphere>          geomLowerJaw(Vec3d(0.0, 0.0, -25.0), 2.0);
+    imstkNew<Capsule>          geomLowerJaw;
     imstkNew<CollidingObject> objLowerJaw("LowerJawObject");
     objLowerJaw->setVisualGeometry(lowerSurfMesh);
     objLowerJaw->setCollidingGeometry(geomLowerJaw);
@@ -231,10 +234,11 @@ main()
 
     // Create and add virtual coupling object controller in the scene
     imstkNew<LaparoscopicToolController> controller(objShaft, objUpperJaw, objLowerJaw, client);
+    controller->setJawAngleChange(6.0e-3);
     scene->addController(controller);
 
     // Add interaction pair for pbd picking
-    imstkNew<PbdObjectPickingPair> pair(clothObj, objUpperJaw, CollisionDetection::Type::PointSetToSphere);
+    imstkNew<PbdObjectPickingPair> pair(clothObj, objUpperJaw, CollisionDetection::Type::PointSetToCapsule);
     scene->getCollisionGraph()->addInteraction(pair);
 
     // Camera
@@ -278,12 +282,12 @@ main()
             std::shared_ptr<PBDPickingCH> ch = std::static_pointer_cast<PBDPickingCH>(pair->getCollisionHandlingA());
             // Activate picking
             
-            if (keyDevice->getButton('i') == KEY_PRESS)
+            if (client->getButton(1))
             {
                 ch->activatePickConstraints();
             }
             // Unpick
-            if (keyDevice->getButton('u') == KEY_PRESS)
+            if (client->getButton(0))
             {
                 ch->removePickConstraints();
             }
diff --git a/Source/Controllers/imstkLaparoscopicToolController.cpp b/Source/Controllers/imstkLaparoscopicToolController.cpp
index c8c6b21f3c17d4ca7bfe4f27ce73ccb15b045d1c..8a32aa270ccc19c18731e32d9b2a5c791f905411 100644
--- a/Source/Controllers/imstkLaparoscopicToolController.cpp
+++ b/Source/Controllers/imstkLaparoscopicToolController.cpp
@@ -56,19 +56,15 @@ LaparoscopicToolController::updateControlledObjects()
     Vec3d p = getPosition();
     Quatd r = getRotation();
 
-    printf("button test\n");
-
     // Update jaw angles
     if (m_deviceClient->getButton(0))
     {
-        printf("button 0\n");
         m_jawAngle += m_change;
         m_jawAngle  = (m_jawAngle > m_maxJawAngle) ? m_maxJawAngle : m_jawAngle;
     }
 
     if (m_deviceClient->getButton(1))
     {
-        printf("button 1\n");
         m_jawAngle -= m_change;
         m_jawAngle  = (m_jawAngle < 0.0) ? 0.0 : m_jawAngle;
     }