Copyright (C) 2007-2017 David Aguilar and contributors
