use mixed return values instead of references
fix warning about empty string sprintf
fail when arguments are passed into zero-argument functions
fix tests to reflect new call sig
fix demo to reflect new call sig