Revert to read-only accessors for simplicity

Accept attributes in constructor and store them in _private.