  original code by Rasca, Berlin 1997-1999
  extended by Karl, Frankfurt 2003
