adding support for string.format