Writing

Guessing the incoming data type is flaky, change to use `fromFoobar` methods. The constructor should accept data in its own data structure if anything (i.e. `array('name' => array('value' => ..., 'type' => ...))`)