added doc
added doc
changed getValue to be typesaf(er)
added distinct
Merge Generics