add non-callback render interface