outline functionality needed