Attribute properties

Implements #101, #102 and #103.