Moved private definitions to internal.h