Source Code from: http://code.osehra.org/journal/browse/publication/24