* Too many changes to detail here, just look at the comments.