Among many things added an customizable encoding interface to allow any encoder to be used for internal communication