diff --git a/bin/mutalyzer-json-service.wsgi b/bin/mutalyzer-json-service.wsgi
index 052dbbb36111927d5c7ef3853af9610a1181b00f..4e2f98020a74e7c2bf80cbb4d7631c6cfa47cc78 100755
--- a/bin/mutalyzer-json-service.wsgi
+++ b/bin/mutalyzer-json-service.wsgi
@@ -23,7 +23,7 @@ To start the built-in HTTP server on port 8082:
 
 import sys
 from wsgiref.simple_server import make_server
-from rpclib.server.wsgi import WsgiApplication
+from spyne.server.wsgi import WsgiApplication
 from mutalyzer.services import json
 
 
diff --git a/mutalyzer/models.py b/mutalyzer/models.py
index 0dcc07ec440cc716e679611f825cce7c2e331ca8..5f2c342278f5b6b0663a7b8bea2f3f98a91263a5 100644
--- a/mutalyzer/models.py
+++ b/mutalyzer/models.py
@@ -1,13 +1,13 @@
 """
 Collection of serilizable objects used by the SOAP webservice. They extend
-from the rpclib ClassModel.
+from the spyne ClassModel.
 
-Default attributes for the rpclib ClassModel:
+Default attributes for the spyne ClassModel:
 - nillable = True
 - min_occurs = 0
 - max_occurs = 1
 
-Additional attributes values for the rpclib String model:
+Additional attributes values for the spyne String model:
 - min_len = 0
 - max_len = 'unbounded'
 - pattern = None
@@ -17,21 +17,21 @@ Additional attributes values for the rpclib String model:
 """
 
 
-from rpclib.model.primitive import String, Integer, Boolean, DateTime
-from rpclib.model.complex import ComplexModel, Array
+from spyne.model.primitive import String, Integer, Boolean, DateTime
+from spyne.model.complex import ComplexModel, Array
 
 from mutalyzer import SOAP_NAMESPACE
 
 
 class Mandatory(object):
     """
-    This is rpclib.model.primitive.Mandatory, but without min_length=1 for
+    This is spyne.model.primitive.Mandatory, but without min_length=1 for
     the String model.
     """
-    String = String(min_occurs=1, nillable=False)
-    Integer = Integer(min_occurs=1, nillable=False)
-    Boolean = Boolean(min_occurs=1, nillable=False)
-    DateTime = DateTime(min_occurs=1, nillable=False)
+    String = String(type_name='mandatory_string', min_occurs=1, nillable=False)
+    Integer = Integer(type_name='mandatory_integer', min_occurs=1, nillable=False)
+    Boolean = Boolean(type_name='mandatory_boolean', min_occurs=1, nillable=False)
+    DateTime = DateTime(type_name='mandatory_date_time', min_occurs=1, nillable=False)
 #Mandatory
 
 
diff --git a/mutalyzer/services/json.py b/mutalyzer/services/json.py
index b1f46c313d6724a9f0b8f81d723fe692f1f9ad63..b4c95485fb02ad9ed4c9f09ce48776754b473a59 100644
--- a/mutalyzer/services/json.py
+++ b/mutalyzer/services/json.py
@@ -3,9 +3,9 @@ Mutalyzer webservice HTTP/RPC with JSON response payloads.
 """
 
 
-from rpclib.application import Application
-from rpclib.protocol.http import HttpRpc
-from rpclib.protocol.json import JsonObject
+from spyne.application import Application
+from spyne.protocol.http import HttpRpc
+from spyne.protocol.json import JsonObject
 
 import mutalyzer
 from mutalyzer.services import rpc
diff --git a/mutalyzer/services/rpc.py b/mutalyzer/services/rpc.py
index 4e4f87767df4797af31fce18bb60b64735d3f3d3..e8e05596bd67e5df73aef286a05e0d7014374936 100644
--- a/mutalyzer/services/rpc.py
+++ b/mutalyzer/services/rpc.py
@@ -8,11 +8,11 @@ Mutalyzer RPC services.
 """
 
 
-from rpclib.decorator import srpc
-from rpclib.service import ServiceBase
-from rpclib.model.primitive import String, Integer, Boolean, DateTime
-from rpclib.model.complex import Array
-from rpclib.model.fault import Fault
+from spyne.decorator import srpc
+from spyne.service import ServiceBase
+from spyne.model.primitive import String, Integer, Boolean, DateTime
+from spyne.model.complex import Array
+from spyne.model.fault import Fault
 import os
 import socket
 from operator import itemgetter, attrgetter
@@ -677,7 +677,7 @@ class MutalyzerService(ServiceBase):
         result.molecule = O.getIndexedOutput('molecule', 0)
 
         # We force the results to strings here, because some results
-        # may be of type Bio.Seq.Seq which rpclib doesn't like.
+        # may be of type Bio.Seq.Seq which spyne doesn't like.
         #
         # todo: We might have to also do this elsewhere.
 
diff --git a/mutalyzer/services/soap.py b/mutalyzer/services/soap.py
index 31bb4e67d99376e8504c26af1a694dce1f19976d..e442b9d0f7b7fd045bdb505d1ac02379f89ba591 100644
--- a/mutalyzer/services/soap.py
+++ b/mutalyzer/services/soap.py
@@ -3,9 +3,9 @@ Mutalyzer SOAP/1.1 webservice.
 """
 
 
-from rpclib.application import Application
-from rpclib.protocol.soap import Soap11
-from rpclib.server.wsgi import WsgiApplication
+from spyne.application import Application
+from spyne.protocol.soap import Soap11
+from spyne.server.wsgi import WsgiApplication
 
 import mutalyzer
 from mutalyzer.services import rpc
@@ -20,6 +20,6 @@ application = Application([rpc.MutalyzerService], tns=mutalyzer.SOAP_NAMESPACE,
 # Below we define WSGI applications for use with e.g. Apache/mod_wsgi.
 # Note: We would like to create the wsgi.Application instance only in the
 #     bin/mutalyzer-webservice.wsgi script, but unfortunately this breaks the
-#     get_interface_document method of rpclib which we use to generate API
+#     get_interface_document method of spyne which we use to generate API
 #     documentation in website.py.
 wsgi_application = WsgiApplication(application)
diff --git a/mutalyzer/website.py b/mutalyzer/website.py
index c738a6731bace7a6ffffb8147d89a6a814abb22e..4dc460404d30297424cfb49d4b707377e478e7c2 100644
--- a/mutalyzer/website.py
+++ b/mutalyzer/website.py
@@ -29,7 +29,7 @@ from lxml import etree
 from cStringIO import StringIO
 from simpletal import simpleTALES
 from simpletal import simpleTAL
-from rpclib.interface.wsdl import Wsdl11
+from spyne.interface.wsdl import Wsdl11
 
 import mutalyzer
 from mutalyzer import util