PassThroughCode refactoring and create PassThrough Core and API for enhace reusability

just check whether can scheme be null ?