Ensure we always define attribute methods

Currently we rely on `method_missing`, which doesn't always get triggered under the right circumstances.