Define interface

This adds the definition of the public interface. Comments welcome!

@neithernut 
You should mention them in both imo