made more OO