trailing underscores to avoid naming conflict