start with Encoder
put init in separate files
put Decoder into separate files
put encoder into separate file(s)
remove empty lines