-template<> struct Protocol::Traits<Int8>: BasicTraits<Int8> { };
-template<> struct Protocol::Traits<UInt8>: BasicTraits<UInt8> { };
-template<> struct Protocol::Traits<Int16>: BasicTraits<Int16> { };
-template<> struct Protocol::Traits<UInt16>: BasicTraits<UInt16> { };
-template<> struct Protocol::Traits<Int32>: BasicTraits<Int32> { };
-template<> struct Protocol::Traits<UInt32>: BasicTraits<UInt32> { };
-template<> struct Protocol::Traits<Int64>: BasicTraits<Int64> { };
-template<> struct Protocol::Traits<UInt64>: BasicTraits<UInt64> { };
-template<> struct Protocol::Traits<float>: BasicTraits<float> { };
-template<> struct Protocol::Traits<double>: BasicTraits<double> { };
+template<typename T>
+struct Protocol::Traits
+{
+ static const std::uint16_t signature = 'C';
+ typedef CompoundSerializer<T> Serializer;
+};
+
+template<> struct Protocol::Traits<bool>: BasicTraits<bool, 'B'> { };
+template<> struct Protocol::Traits<std::int8_t>: BasicTraits<std::int8_t, 'I'> { };
+template<> struct Protocol::Traits<std::uint8_t>: BasicTraits<std::uint8_t, 'U'> { };
+template<> struct Protocol::Traits<std::int16_t>: BasicTraits<std::int16_t, 'I'> { };
+template<> struct Protocol::Traits<std::uint16_t>: BasicTraits<std::uint16_t, 'U'> { };
+template<> struct Protocol::Traits<std::int32_t>: BasicTraits<std::int32_t, 'I'> { };
+template<> struct Protocol::Traits<std::uint32_t>: BasicTraits<std::uint32_t, 'U'> { };
+template<> struct Protocol::Traits<std::int64_t>: BasicTraits<std::int64_t, 'I'> { };
+template<> struct Protocol::Traits<std::uint64_t>: BasicTraits<std::uint64_t, 'U'> { };
+template<> struct Protocol::Traits<float>: BasicTraits<float, 'F'> { };
+template<> struct Protocol::Traits<double>: BasicTraits<double, 'F'> { };