add a ton of exceptions to make it a bit more functional

Signed-off-by: Chris “Kwpolska” Warrick <kwpolska@gmail.com>