Wondering about using the acts_as_nested for a model but concerned about the performance overhead of having to rewrite the table each time and entry is added or removed(and locking it while it''s happening or risking data integrity probs). Wasn''t really familiar with the structure so did a little reading up on it, and one solution to this seems to spreading the table out, so that [using the table in the API as an example], instead of: ID | PARENT | LEFT | RIGHT | DATA 1 | 0 | 1 | 14 | root 2 | 1 | 2 | 7 | Child 1 3 | 2 | 3 | 4 | Child 1.1 4 | 2 | 5 | 6 | Child 1.2 5 | 1 | 8 | 13 | Child 2 6 | 5 | 9 | 10 | Child 2.1 7 | 5 | 11 | 12 | Child 2.2 you would do this: ID | PARENT | LEFT | RIGHT | DATA 1 | 0 | 10 | 140 | root 2 | 1 | 20 | 70 | Child 1 3 | 2 | 30 | 40 | Child 1.1 4 | 2 | 50 | 60 | Child 1.2 5 | 1 | 80 | 130 | Child 2 6 | 5 | 90 | 100 | Child 2.1 7 | 5 | 110 | 120 | Child 2.2 Then if you added a new entry 8, which was a child of 2, for example, you could give it a lft of 121 and a rgt of 122, meaning no full-table re-write. Of course this fails down eventually and does require at least a partial table rewrite (and you''d prob want to do a multiple of more than 10 on the entries to begin with), but it would certainly cut down the probs. Anybody got any comments? There''s probably a good reason why the AR implementation takes the full-rewrite approach, and I''m pretty much a noob (not a programming background) so feel free to shoot me down in flames. The new table would look like: ID | PARENT | LEFT | RIGHT | DATA 1 | 0 | 10 | 140 | root 2 | 1 | 20 | 70 | Child 1 3 | 2 | 30 | 40 | Child 1.1 4 | 2 | 50 | 60 | Child 1.2 5 | 1 | 80 | 130 | Child 2 6 | 5 | 90 | 100 | Child 2.1 7 | 5 | 110 | 120 | Child 2.2 8 | 5 | 121 | 122 | Child 2.3 Cheers Chris T