add method to cancel queued messages; use nullable types for nullable properties; send user-agent string