a fork from http://sourceforge.net/projects/a2070asst/