cleaned up Page and Component, introduced breadth-first rendering