add serializers that enables to use an arbitrary serialization method
add docs