Re-do the IteratorBase stuff

Apparently I don't quite grok virtual functions yet.
Basic translation is working