Tidy up, minor but fixes and add IfHasValue/Else to option operator