working on caching. now breaks stuff in weird and wonderfull ways