added throwing to the requirements