add commands
add exceptions
bug fix