commit
Changes to make Encoder a bit more abstracted and nice.