def process(self, index=None):
        """
        This will completely process a directory of elevation tiles (as
        supplied in the constructor). Both phases of the calculation, the
        single tile and edge resolution phases are run.

        Parameters
        -----------
        index : int/slice (optional)
            Default None - processes all tiles in a directory. See
            :py:func:`process_twi` for additional options.
        """
        # Round 0 of twi processing, process the magnitude and directions of
        # slopes
        print "Starting slope calculation round"
        self.process_twi(index, do_edges=False, skip_uca_twi=True)

        # Round 1 of twi processing
        print "Starting self-area calculation round"
        self.process_twi(index, do_edges=False)

        # Round 2 of twi processing: edge resolution
        i = self.tile_edge.find_best_candidate(self.elev_source_files)

        print "Starting edge resolution round: ",
        count = 0
        i_old = -1
        same_count = 0
        while i is not None and same_count < 3:
            count += 1
            print '*' * 10
            print count, '(%d -- > %d) .' % (i_old, i)
            # %%
            self.process_twi(i, do_edges=True)
            i_old = i
            i = self.tile_edge.find_best_candidate(self.elev_source_files)
            if i_old == i:
                same_count += 1
            else:
                same_count = 0

        print '*'*79
        print '*******    PROCESSING COMPLETED     *******'
        print '*'*79
        return self