Added license, protocol, made classes do what it says in the protocol