refine with OO