Weave reworked. Merge in progress.