fix bugs, add exceptions