adopted GNU General Public License v3.0