hide internal struct