require deterministicity