rearranged to match order parts being implemented