Refactored whole Caller Class and Added UnitTest