use .to_owned() instead of ~"" for strings