use triple-underscore to avoid reserved keyword