Split out the core interfaces into finer-grained interfaces & changed naming/location conventions