This was overly long - fixed and merged.