has bad traverse method, good for before and after