PassThroughCode refactoring and create PassThrough Core and API for enhace reusability

Do we need this buffer size to be configurable? I guess not.