used to be that type and layout were hidden now type is gone and layout is an explicit instance, so 0 overhead