Copyright (c) 2009 Hannu Mallat