added throws exception