Magic Properties

Replaces #40.