Pull extensions into their own project
Add expiry to add.  Add interface for cache