to be strict, shouldn't host and port be optional fields?
now None is serialized as "" and materialized as Some("")