added protocol for generic attr access