Out of interest, what is the idea behind separating interface and implementation here? Is there code that only knows the IF but not the impl?