return type changed to T extends Object