various magic method changes