PassThroughCode refactoring and create PassThrough Core and API for enhace reusability

these method names may need to refactor. like ioReactorShutDown > shutDownIOReactor