cache has bugs but a good start