Non-commutative unique factorization domains