make more OO style