Detailed decode design work

Still have a lot to do, but the unit test is passing!