copyright (c) 2004-2016