fix retain loops through self