def complete(self, uio, dropped=False):
        if self.dropped and not dropped:
            return
        for end in ['src', 'dst']:
            if getattr(self, end):
                continue
            uio.show('\nEnter ' + end + ' for transaction:')
            uio.show('')
            uio.show(self.summary())
            try:
                endpoints = []
                remaining = self.amount
                while remaining:
                    account = uio.text(' Enter account', None)
                    amount = uio.decimal(
                        ' Enter amount',
                        default=remaining,
                        lower=0,
                        upper=remaining
                    )
                    endpoints.append(Endpoint(account, amount))
                    remaining = self.amount \
                        - sum(map(lambda x: x.amount, endpoints))
            except ui.RejectWarning:
                sys.exit("bye!")
            if end == 'src':
                endpoints = map(
                    lambda x: Endpoint(x.account, -x.amount),
                    endpoints
                )
            setattr(self, end, endpoints)