the pure vs impure thing is something i was fairly diligent about in the beginning, but totally fell off. i also felt a little weird about having impure functions called in and outside of transactions (read-only).