encode and decode fully functional, just need to implement input/output