change gen to use Encoder and Decoder
inline the gross switch statements
beginning work on maps and fallback reflection