OSSP var o problem: ${foo:s/^(.+)$/<\1>/} -> fails with malformatted search & replace error because it tries to parse the $ as a variable. ${foo:s/^(.+)\$/<\1>/} -> does not substitute because it leaves the \$ in the regex and this no longer matches the end (instead it matches a dollar) o "problem"!?: ${unknown:-foo} fails on force_expand and results in no expansion (kept as is) if not forced_expand. It only does the expected if the callback returns empty strings for undefined variables. This is certainly intended this way, but has to be documented better? o use internal context to carry information o document exception handling o additional feature: functions via callback. ${foo:F:F} calls callback for bar with result of foo expansion and then callback for quux with the result returned from bar.