caching tested. seems fine. cleaning up left