diff --git a/jupyter-openbis-extension/server.py b/jupyter-openbis-extension/server.py
index 086bffaebaee92dbc147191fe03ea7cc3e525486..ec0ef7f2cf48f957ce696e2a25e42362a3be61eb 100644
--- a/jupyter-openbis-extension/server.py
+++ b/jupyter-openbis-extension/server.py
@@ -197,17 +197,18 @@ class SampleHandler(IPythonHandler):
             try:
                 conn.reconnect()
             except Exception as exc:
-                print(exc)
-                self.send_error(
-                    reason = 'connection to {} could not be established: {}'.format(conn.name, exc)
-                )
+                self.write({
+                    "reason" : 'connection to {} could not be established: {}'.format(conn.name, exc)
+                })
 
         sample = None
         try:
             sample = conn.openbis.get_sample(permId)
         except Exception as exc:
-            print(exc) 
-            self.send_error( reason = 'No such sample: {}'.format(permId) )
+            self.set_status(404)
+            self.write({
+                "reason" : 'No such sample: {}'.format(permId)
+            })
         if sample is None:
             return
 
@@ -223,9 +224,11 @@ class SampleHandler(IPythonHandler):
         try:
             conn = openbis_connections[params['connection_name']]
         except KeyError:
-            self.send_error(
-                reason = 'connection {} was not found'.format(params['connection_name'])
-            )
+            self.write({
+                "reason" : 'connection {} was not found'.format(
+                    params['connection_name']
+                )
+            })
         
         datasets = self.get_datasets(conn, params['permId'])
         if datasets is not None:
@@ -245,26 +248,27 @@ class DataSetDownloadHandler(IPythonHandler):
             try:
                 conn.reconnect()
             except Exception as exc:
-                self.send_error(
-                    reason = 'connection to {} could not be established: {}'.format(conn.name, exc)
-                )
+                self.write({
+                    "reason" : 'connection to {} could not be established: {}'.format(conn.name, exc)
+                })
                 return
 
         try:
             dataset = conn.openbis.get_dataset(permId)
         except Exception as exc:
-            self.send_error(
-                reason = 'No such dataSet found: {}'.format(permId)
-            )
+            self.set_status(404)
+            self.write({
+                "reason" : 'No such dataSet found: {}'.format(permId)
+            })
             return
 
         # dataset was found, download the data to the disk
         try: 
             destination = dataset.download(destination=downloadPath)
         except Exception as exc:
-            self.send_error(
-                reason = 'Data for DataSet {} could not be downloaded: {}'.format(permId, exc)
-            )
+            self.write({
+                "reason": 'Data for DataSet {} could not be downloaded: {}'.format(permId, exc)
+            })
             return
             
         # return success message
@@ -286,9 +290,9 @@ class DataSetDownloadHandler(IPythonHandler):
         try:
             conn = openbis_connections[params['connection_name']]
         except KeyError:
-            self.send_error(
-                reason = 'connection {} was not found'.format(params['connection_name'])
-            )
+            self.write({
+                "reason":'connection {} was not found'.format(params['connection_name'])
+            })
             return
         
         results = self.download_data(conn=conn, permId=params['permId'], downloadPath=params['downloadPath'])
@@ -303,17 +307,18 @@ class DataSetUploadHandler(IPythonHandler):
             try:
                 conn.reconnect()
             except Exception as exc:
-                self.send_error(
-                    reason = 'connection to {} could not be established: {}'.format(conn.name, exc)
-                )
+                self.write({
+                    "reason": 'connection to {} could not be established: {}'.format(conn.name, exc)
+                })
                 return
 
         try:
             sample = conn.openbis.get_sample(data.get('sampleIdentifier'))
         except Exception as exc:
-            self.send_error(
-                reason = 'No such sample found: {}'.format(data.get('sampleIdentifier'))
-            )
+            self.set_status(404)
+            self.write({
+                "reason" : 'No such sample: {}'.format(data.get('sampleIdentifier'))
+            })
             return
 
         filenames = []
@@ -330,17 +335,17 @@ class DataSetUploadHandler(IPythonHandler):
                 files       = filenames
             ) 
         except Exception as exc:
-            self.send_error(
-                reason = 'Error while creating the dataset: {}'.format(exc)
-            )
+            self.write({
+                "reason": 'Error while creating the dataset: {}'.format(exc)
+            })
             return
 
         try:
             ds.save()
         except Exception as exc:
-            self.send_error(
-                reason = 'Error while saving the dataset: {}'.format(exc)
-            )
+            self.write({
+                "reason": 'Error while saving the dataset: {}'.format(exc)
+            })
             return
         
             
@@ -358,9 +363,9 @@ class DataSetUploadHandler(IPythonHandler):
         try:
             conn = openbis_connections[params['connection_name']]
         except KeyError:
-            self.send_error(
-                reason = 'connection {} was not found'.format(params['connection_name'])
-            )
+            self.write({
+                "reason": 'connection {} was not found'.format(params['connection_name'])
+            })
             return
 
         data = self.get_json_body()