PassThroughCode refactoring and create PassThrough Core and API for enhace reusability

see whether we need to synchronise here.