Adding contracts and exceptions
Adding trait and renderer base class