Better than my stab at it ;)
Sorry about the underscore, it's a personal convention which has no place here.