switched from wikipedia example to Vincent Himpe's framework