adds `option` method, updates `flattenData` method to take an array of properties to flatten.

also moves a few methods around.