added commentary still need to do postconditions and exceptions