semi required.. something weird with toString() of fn