completer rewritten to fit in the changed api