Copyright (C) 2007-2016 David Aguilar and contributors
