private method