more procedural -> oop changes