Moved to internal, created impl and interface.