initial commit - please beware experimental code --> extremely ugly.