refactored to allow optional u, v... added suggestions for normalizations...