got rid of all circle references, still a work in progress