caching works, interface and api needs work