all working well, about to implement caching