some initial comments...haven't read most of the code