type decls