add render cache; simplify render node; update tests