This is based on Martin Fowler examples from his book "Refactoring"