better types using primitive typedefs