Tapestry framework