Added some comments and renamed an interface in an attempt to make the
best possible meaning.