该封装的细节并没有封装，反而在不需要隐藏的地方做了 alias function 来隐藏