internal api replacement