More implementation. Most tests passing.

Hardest ones yet to come + need to define event behavior.