prototype iteration, still unsafe to merge