lots of documentation; some naming convention tweaks