separating encoders & decoders; TODO extract all encoder & decoders in separate maven modules