Copyright (C) 2007-2020 David Aguilar and contributors
