duplicating api for reasons I don't understand