Refactored to use inheritance and separate logic where possible. Addressed comments. Change-Id: I9e62414cd83121575bdf99a3b47466a7585bedb6 Former-commit-id: 6e015b3f61c20635077d6e8271e9b763e5a32fe1
Change-Id: I1e4b1eefe5f507742805886292ba67b24f40f34c Former-commit-id: b888d311923ba0628fa015018ef2f62fce47fb43
Change-Id: I1bc8fc8a4c125bc79057c4af929c0495f0e5eb99 Former-commit-id: 875006e24de0755cdd0dedc7b0afcf221bcbad49