by popular demand, rename Immutable->Unmodifiable, and add factory funs