new errmsg-free implementation (requires extras)