diff --git a/pbswrap.py b/pbswrap.py
index fd02c8b2eef4119ac957335e1419b816e38ba5b0..0c98858c316da877c2c158fff5d8cd982da172d8 100755
--- a/pbswrap.py
+++ b/pbswrap.py
@@ -22,14 +22,14 @@ def print_dashboard(users, host, pbsnodes):
     #         jber        3        0        0        0
 
     print
-    print '-'*54
-    print 'cpus'.rjust(18) + 'nodes'.rjust(9)
-    print 'User'.rjust(9) + 'Running'.rjust(9) + 'Running'.rjust(9) \
-        +'Queued'.rjust(9) + 'Waiting'.rjust(9) + 'Other'.rjust(9)
+    print ('-' * 54)
+    print ('cpus'.rjust(18) + 'nodes'.rjust(9))
+    print ('User'.rjust(9) + 'Running'.rjust(9) + 'Running'.rjust(9) \
+        + 'Queued'.rjust(9) + 'Waiting'.rjust(9) + 'Other'.rjust(9))
     # nodeSum: overview (summation of all jobs) nodes per user:
     # nodeSum = [running, queued, waiting, other, cpus]
     nodeSum = [0, 0, 0, 0, 0]
-    print '-'*54
+    print ('-' * 54)
     # print all values in the table: the nodes used per user
     #userlist = users['users'].keys()
     #userlist.sort()
@@ -44,11 +44,11 @@ def print_dashboard(users, host, pbsnodes):
         Q = users[uid]['Q']
         W = users[uid]['W']
         O = users[uid]['E'] + users[uid]['H'] + users[uid]['T'] \
-           +users[uid]['S'] + users[uid]['O'] + users[uid]['C']
+           + users[uid]['S'] + users[uid]['O'] + users[uid]['C']
 
         cpus = users[uid]['cpus']
-        print uid.rjust(9) + str(cpus).rjust(9) + str(R).rjust(9) \
-            + str(Q).rjust(9) + str(W).rjust(9) + str(O).rjust(9)
+        print (uid.rjust(9) + str(cpus).rjust(9) + str(R).rjust(9) \
+            + str(Q).rjust(9) + str(W).rjust(9) + str(O).rjust(9))
         nodeSum[0] += R
         nodeSum[1] += Q
         nodeSum[2] += W
@@ -58,18 +58,18 @@ def print_dashboard(users, host, pbsnodes):
     nr_nodes = pbsnodes['nr_nodes']
     down = pbsnodes['down']
     others = pbsnodes['others']
-    total_cpu = host['cpu_per_node']*nr_nodes
+    total_cpu = host['cpu_per_node'] * nr_nodes
 
     # the summed up for each node status (queued, running,...)
-    print '-'*54
-    print 'total'.rjust(9)+str(nodeSum[4]).rjust(9) +str(nodeSum[0]).rjust(9) \
+    print ('-' * 54)
+    print ('total'.rjust(9) + str(nodeSum[4]).rjust(9) + str(nodeSum[0]).rjust(9) \
         + str(nodeSum[1]).rjust(9) + str(nodeSum[2]).rjust(9)\
-        + str(nodeSum[3]).rjust(9)
-    print '-'*54
-    print 'free'.rjust(9)+str(total_cpu - nodeSum[4]).rjust(9) \
-        + str(nr_nodes-nodeSum[0]-others-down).rjust(9)
-    print 'down'.rjust(9)+str(down).rjust(18)
-    print '-'*54
+        + str(nodeSum[3]).rjust(9))
+    print ('-' * 54)
+    print ('free'.rjust(9) + str(total_cpu - nodeSum[4]).rjust(9) \
+        + str(nr_nodes - nodeSum[0] - others - down).rjust(9))
+    print ('down'.rjust(9) + str(down).rjust(18))
+    print ('-' * 54)
     print
 
 
@@ -79,7 +79,7 @@ def print_node_loading(users, host, nodes, nodesload):
     """
 
     if len(host) < 1:
-        print 'It is very quit, nobody is working on the cluster.'
+        print ('It is very quit, nobody is working on the cluster.')
         return
 
     hostname = host['name']
@@ -88,15 +88,15 @@ def print_node_loading(users, host, nodes, nodesload):
     print
     # print a header
     if hostname == 'gorm':
-        print '-'*79
-        header = '|'.join([str(k).center(5) for k in range(1,13,1)]) + '|'
-        print 'id'.center(5), header
-        print '-'*79
+        print ('-' * 79)
+        header = '|'.join([str(k).center(5) for k in range(1, 13, 1)]) + '|'
+        print ('id'.center(5), header)
+        print ('-' * 79)
     elif hostname == 'jess':
-        print '-'*126
-        header = '|'.join([str(k).center(5) for k in range(1,21,1)]) + '|'
-        print 'id'.center(5), header
-        print '-'*126
+        print ('-' * 126)
+        header = '|'.join([str(k).center(5) for k in range(1, 21, 1)]) + '|'
+        print ('id'.center(5), header)
+        print ('-' * 126)
 
     # print who is using the nodes
     for node in sorted(nodes):
@@ -104,7 +104,7 @@ def print_node_loading(users, host, nodes, nodesload):
         # now we have a list of user on this node
         try:
             users = sorted(nodesload[node])
-            for kk in range(len(users),cpunode):
+            for kk in range(len(users), cpunode):
                 users.append('')
             # limit uid names to 5 characters
             printlist = '|'.join([k[:5].center(5) for k in users]) + '|'
@@ -112,17 +112,17 @@ def print_node_loading(users, host, nodes, nodesload):
         except KeyError:
             printlist = status.center(5)
 
-        print node, printlist
+        print (node, printlist)
 
     # print a header
     if hostname == 'gorm':
-        print '-'*79
-        print 'id'.center(5), header
-        print '-'*79
+        print ('-' * 79)
+        print ('id'.center(5), header)
+        print ('-' * 79)
     elif hostname == 'jess':
-        print '-'*126
-        print 'id'.center(5), header
-        print '-'*126
+        print ('-' * 126)
+        print ('id'.center(5), header)
+        print ('-' * 126)
     #print
 
 
@@ -176,7 +176,7 @@ def parse_pbsnode_lall(output):
     return pbsnodes, nodes
 
 
-def parse_qstat_n1(output):
+def parse_qstat_n1(output, hostname=None):
     """
     Parse the output of qstat -n1
     """
@@ -188,26 +188,22 @@ def parse_qstat_n1(output):
     host = {}
     users = {}
     # get the hostname
-    hostname = socket.gethostname()
-    if hostname[:5] == 'g-000':
-        host['name'] = 'gorm'
-        host['cpu_per_node'] = 12
-    else:
-        # 272 nodes are 2 x 10 core (twenty) processors
+    if hostname is None:
+        hostname = socket.gethostname()
+    if 'jess' in hostname:
         host['name'] = 'jess'
-        #total_nodes = 80
         host['cpu_per_node'] = 20
+    else:
+        host['name'] = 'gorm'
+        host['cpu_per_node'] = 12
+
     # take the available nodes in nr_nodes: it excludes the ones
     # who are down
     #queue['_total_cpu_'] = cpu_node*nr_nodes
 
-    ii = 0
-    for line in output:
-        # first 5 are not relevant
-        if ii < 5:
-            ii += 1
+    for line in output[5:]:
+        if len(line.strip()) == 0:
             continue
-
         items = line.split()
         queue = items[2]
 
@@ -268,8 +264,6 @@ def parse_qstat_n1(output):
                 except KeyError:
                     nodesload[node] = [userid]
 
-        ii += 1
-
     return users, host, nodesload
 
 # FIXME: counts diffferent compared to launch.py....
@@ -296,8 +290,8 @@ def count_cpus(users, host, pbsnodes):
                       + users[uid]['O'] + users[uid]['C']
 
     # free cpus
-    down_cpu = host['cpu_per_node']*pbsnodes['down']
-    total_cpu = host['cpu_per_node']*pbsnodes['nr_nodes']
+    down_cpu = host['cpu_per_node'] * pbsnodes['down']
+    total_cpu = host['cpu_per_node'] * pbsnodes['nr_nodes']
     cpu_free = total_cpu - down_cpu - nodeSum['used_cpu']
 
     return cpu_free, nodeSum
@@ -334,9 +328,9 @@ def create_input(walltime='00:59:59', queue='xpresq', pbs_in='pbs_in/', ppn=1,
     Create a PBS script for a command. Optionally, define a python environment.
     """
 
-    pbs_err_file = os.path.join(pbs_out, jobname+'.err')
-    pbs_out_file = os.path.join(pbs_out, jobname+'.out')
-    pbs_in_file = os.path.join(pbs_in, jobname+'.pbswrap')
+    pbs_err_file = os.path.join(pbs_out, jobname + '.err')
+    pbs_out_file = os.path.join(pbs_out, jobname + '.out')
+    pbs_in_file = os.path.join(pbs_in, jobname + '.pbswrap')
 
     pbs_script = PBS_TEMP
     pbs_script = pbs_script.replace('[jobname]', jobname)
@@ -348,8 +342,8 @@ def create_input(walltime='00:59:59', queue='xpresq', pbs_in='pbs_in/', ppn=1,
     pbs_script = pbs_script.replace('[queue]', queue)
     pbs_script = pbs_script.replace('[commands]', commands)
 
-    print 'following commands will be executed on the cluster:'
-    print '%s' % (commands)
+    print ('following commands will be executed on the cluster:')
+    print ('%s' % (commands))
 
     # make sure a pbs_in and pbs_out directory exists
     if not os.path.exists(pbs_in):