internal rendering