split out render logic into separate strategy