implement weak referecing to avoid cyclical