Closes #105 (reintroduces lexical private fields to avoid name clashes)