switch to strings package for substitution, adding extensible substitution and date handling