One thing interesting about making emulator is that, it's all-or-nothing. You can't tell if your implementation's working until you finish it. For my case, I did end up having a few minor bugs, which I promptly fixed and got the whole thing working correctly.
Maybe I should try implementing extensions next, when I've got the time for that. :)