make port configurable, allow passing a string for a filename
raise ValueError, not Assertion