add PrivateData support to Engine and Context to provide flexibatility