New data structure

Doesn't look like we ever use this as a setter, is it worth having this string-or-object handling then? Similarly for `.prototype.source`?