need to manually break the reference cycles