throw on top of methods when possible to improve readability
refactoring