think this is better then the last approach
merged the changes from the different key-generic versions