I get warnings about these being declared as classes here instead of interfaces (which are equivalent to struct)