typedefs implemented