added some documentation at top