Agree with @squirrelo, `datatype` is also needed. And that's true, we are making assumptions about `options`. We still don't really know how `options` are going to be represented, so right know we can let it as it is now. I think that options is going to be an obj with `__eq__` defined...