had to do some refactoring to get reasons seperated