optimizations
even more optimizations
retain circle fix