distruct magic method