diff --git a/gridtk/manager.py b/gridtk/manager.py
index 1644cd068c54e44c2ce7950a957a844dc48ee374..8f48763a91970f05f1fc7a9b65c02acb19a567ed 100644
--- a/gridtk/manager.py
+++ b/gridtk/manager.py
@@ -191,9 +191,9 @@ class JobManager:
       self.unlock()
       return
 
-    array_format = "{0:>%d}  {1:^%d}  {2:^%d}" % lengths[:3]
+    array_format = "{0:^%d}  {1:>%d}  {2:^%d}  {3:^%d}" % lengths[:4]
     delimiter = format.format(*['='*k for k in lengths])
-    array_delimiter = array_format.format(*["-"*k for k in lengths[:3]])
+    array_delimiter = array_format.format(*["-"*k for k in lengths[:4]])
     header = [fields[k].center(lengths[k]) for k in range(len(lengths))]
 
     # print header
@@ -233,7 +233,7 @@ class JobManager:
     def _write_array_jobs(array_jobs):
       for array_job in array_jobs:
         if unfinished or array_job.status in accepted_status:
-          print("Array Job", str(array_job.unique), ":")
+          print("Array Job", str(array_job.id), ":")
           _write_contents(array_job)
 
     self.lock()
diff --git a/gridtk/models.py b/gridtk/models.py
index 21a9cb61afeeda7059f5009b259d609a1243402b..69a1ab73aae51fbd1680a36f996f6fe33cd8bee3 100644
--- a/gridtk/models.py
+++ b/gridtk/models.py
@@ -57,7 +57,7 @@ class ArrayJob(Base):
     queue = self.job.queue_name if self.machine_name is None else self.machine_name
     status = "%s" % self.status + (" (%d)" % self.result if self.result is not None else "" )
 
-    return format.format(job_id, queue, status)
+    return format.format("", job_id, queue, status)
 
 
 class Job(Base):
diff --git a/gridtk/script/jman.py b/gridtk/script/jman.py
index abb64c72169f48f9adcfc90312332f29b08e26be..361f4aeac470f8a3b612f6e41b5183d93269f70d 100644
--- a/gridtk/script/jman.py
+++ b/gridtk/script/jman.py
@@ -160,7 +160,7 @@ def run_scheduler(args):
 def list(args):
   """Lists the jobs in the given database."""
   jm = setup(args)
-  jm.list(job_ids=get_ids(args.job_ids), print_array_jobs=args.print_array_jobs, print_dependencies=args.print_dependencies, status=args.status, long=args.verbose > 1 or args.long, ids_only=args.ids_only, names=args.names)
+  jm.list(job_ids=get_ids(args.job_ids), print_array_jobs=args.print_array_jobs, print_dependencies=args.print_dependencies, status=args.status, long=args.long, ids_only=args.ids_only, names=args.names)
 
 
 def communicate(args):
diff --git a/gridtk/sge.py b/gridtk/sge.py
index b3a2233d54dcc5efd05fb75fc278a9e05cf9aeea..eb0e1aac3be182cb09623e8ac2e988389a3875e5 100644
--- a/gridtk/sge.py
+++ b/gridtk/sge.py
@@ -10,7 +10,7 @@ from __future__ import print_function
 
 from .manager import JobManager
 from .setshell import environ
-from .models import add_job
+from .models import add_job, Job
 from .tools import logger, qsub, qstat, qdel, make_shell
 
 import os, sys
@@ -155,6 +155,17 @@ class JobManagerSGE(JobManager):
     self.unlock()
 
 
+  def run_job(self, job_id, array_id = None):
+    """Overwrites the run-job command from the manager to extract the correct job id before calling base class implementation."""
+    # get the unique job id from the given grid id
+    self.lock()
+    job = self.session.query(Job).filter(Job.id == job_id)
+    job_id = list(job)[0].unique
+    self.unlock()
+    # call base class implementation with the corrected job id
+    return JobManager.run_job(self, job_id, array_id)
+
+
   def stop_jobs(self, job_ids):
     """Stops the jobs in the grid."""
     self.lock()