Copyright (c) Hannu Mallat 2007