changed api to return original object