decoder can be removed if only string decoder is available. we can add it later if requirement emerge