pragma solidity ^0.4.0; library GreeterLib { struct Greeting { bytes32 greeting; uint count; address[] greeted; } function greet(Greeting storage self, address who) public returns (bytes32) { self.count += 1; self.greeted.push(who); return self.greeting; } } contract GreeterSimple { GreeterLib.Greeting greeting; function GreeterSimple(bytes32 _greeting) { greeting.greeting = _greeting; } function greet() public returns (bytes32) { return GreeterLib.greet(greeting, msg.sender); } }