Wouldn't it be solved by just making these functions protected?