type decl