-extern submesh_t *new_submesh(void) __attribute__((__malloc__));
-extern void free_submesh(submesh_t *);
-extern void submesh_add(struct meshlink_handle *mesh, submesh_t *);
-extern void submesh_del(struct meshlink_handle *mesh, submesh_t *);
-extern submesh_t *lookup_submesh(struct meshlink_handle *mesh, const char *);
+extern submesh_t *create_submesh(struct meshlink_handle *mesh, const char *) __attribute__((__warn_unused_result__));
+extern submesh_t *lookup_submesh(struct meshlink_handle *mesh, const char *) __attribute__((__warn_unused_result__));
+extern submesh_t *lookup_or_create_submesh(struct meshlink_handle *mesh, const char *) __attribute__((__warn_unused_result__));
+extern bool submesh_allows_node(const submesh_t *submesh, const struct node_t *node) __attribute__((__warn_unused_result__));