Removed unneeded but obvious type information
Minor improvements to argument names of Decodable
Move validate to a trait

Allows the enforcement of syntax
Fixed typo