revamp completions to allow for completions from multiple contexts