hmmmm... things have moved on, but I'll check this in anyway
complete merge