Please add scala doc to this trait and the classes below.