added oo-approach