Did my best to cover the majority of exceptions.