Done with good prototype! (I'm really considering just re-writing this in C++...)