initial pass at disassembler
Loosening some types to let things compile... still needs a better fix.
cleanups because I can't help myself