unique factorization domains