1st draft

with caches