improve throws exception