first pass at reactive renderer