Added some documentation and added an interface

nothing special