refactored oo utility classes