doc constructor