lots of changes, corrections