Copyright (C) 2011-2015 by Vitaly Puzrin