use triple underscore to distinguish synthetic attributes