This function is experimental and may change or be deleted in future.