I like this decoupling of things and right use of OO that cleans and make testing a pleasure