strongly type attributes

**please review**