Lots of good changes. Check the code...