document general typing principle