Licensed to GPLv2 or later. solve #19