orginizing top level abstraction