seperated de/encoders from providers (fixes #21)