diff --git a/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java b/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
index 498aeae..a757306 100644
--- a/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
+++ b/src/main/java/org/apache/ws/scout/registry/BusinessQueryManagerImpl.java
@@ -892,8 +892,7 @@
                 }
 
             } catch (RegistryException e)
-            {
-                e.printStackTrace();
+            { 
                 throw new JAXRException(e.getLocalizedMessage());
             }
         }
diff --git a/src/main/java/org/apache/ws/scout/registry/RegistryImpl.java b/src/main/java/org/apache/ws/scout/registry/RegistryImpl.java
index c554978..21eff8f 100644
--- a/src/main/java/org/apache/ws/scout/registry/RegistryImpl.java
+++ b/src/main/java/org/apache/ws/scout/registry/RegistryImpl.java
@@ -169,7 +169,7 @@
 			else
 				this.setAdminURI(new URI(DEFAULT_ADMIN_ENDPOINT));
 		} catch (URISyntaxException muex) {
-			muex.printStackTrace();
+			throw new RuntimeException(muex);
 		}
 
 		String secProvider = props.getProperty(SECURITY_PROVIDER_PROPERTY_NAME);
@@ -1107,14 +1107,14 @@
 			// instruct class loader to load the TransportFactory
 			transportClass = getClassForName(className);
 		} catch (ClassNotFoundException cnfex) {
-			cnfex.printStackTrace();
+			throw new RuntimeException(cnfex);
 		}
 
 		try {
 			// try to instantiate the TransportFactory
 			transport = (Transport) transportClass.newInstance();
-		} catch (java.lang.Exception ex) {
-			ex.printStackTrace();
+		} catch (Exception ex) {
+			throw new RuntimeException(ex);
 		}
 
 		return transport;
diff --git a/src/main/java/org/apache/ws/scout/transport/AxisTransport.java b/src/main/java/org/apache/ws/scout/transport/AxisTransport.java
index 504edba..c30f95a 100644
--- a/src/main/java/org/apache/ws/scout/transport/AxisTransport.java
+++ b/src/main/java/org/apache/ws/scout/transport/AxisTransport.java
@@ -68,8 +68,6 @@
     }
     catch (AxisFault fault) {
 
-      fault.printStackTrace();
-
       try {
         Message msg = call.getResponseMessage();
         response = msg.getSOAPEnvelope().getFirstBody().getAsDOM();
@@ -113,8 +111,6 @@
     }
     catch (AxisFault fault) {
 
-      fault.printStackTrace();
-
       try {
         Message msg = call.getResponseMessage();
         response = msg.getSOAPEnvelope().getFirstBody().getAsString();
diff --git a/src/main/java/org/apache/ws/scout/transport/LocalTransport.java b/src/main/java/org/apache/ws/scout/transport/LocalTransport.java
index 0aef655..bff62f7 100644
--- a/src/main/java/org/apache/ws/scout/transport/LocalTransport.java
+++ b/src/main/java/org/apache/ws/scout/transport/LocalTransport.java
@@ -86,8 +86,7 @@
         Document document = parser.parse(request);
         Element element = document.getDocumentElement();
         response= XMLUtils.convertNodeToXMLString(send(element, endpointURI));
-    } catch (Exception ex) {
-    	ex.printStackTrace();
+    } catch (Exception ex) { 
     	throw new RegistryException(ex);
     }
     log.debug("\nResponse message:\n" + response);
diff --git a/src/main/java/org/apache/ws/scout/transport/RMITransport.java b/src/main/java/org/apache/ws/scout/transport/RMITransport.java
index d471e81..14da4ec 100644
--- a/src/main/java/org/apache/ws/scout/transport/RMITransport.java
+++ b/src/main/java/org/apache/ws/scout/transport/RMITransport.java
@@ -110,8 +110,7 @@
         Document document = parser.parse(request);
         Element element = document.getDocumentElement();
         response= XMLUtils.convertNodeToXMLString(send(element, endpointURI));
-    } catch (Exception ex) {
-    	ex.printStackTrace();
+    } catch (Exception ex) { 
     	throw new RegistryException(ex);
     }
     log.debug("\nResponse message:\n" + response);
