Tapestry algorithm