Tested decoding. Working. (but recursion hasn't been tested)