work in progress. Not finished and therefor buggy.