changes to structure, work through callbacks