version 2. I think this is working. still need to fix self reading and such.