oo structure implementation