Copyright (c) 2008 Hannu Mallat