Interface class added. It has lots of internal documentation