Completion Engine abstraction

Were you thinking of something like this?