moved to OO model