strongly type attributes

**please review**
Okay. I will subclass Key.