-// ========== MSG Layer ==============
-typedef struct s_msg_host_priv *msg_host_priv_t;
-msg_host_priv_t sg_host_msg(sg_host_t host);
-XBT_PUBLIC(void) sg_host_msg_set(sg_host_t host, msg_host_priv_t priv);
-XBT_PUBLIC(void) sg_host_msg_destroy(sg_host_t host);
-
-// ========== SD Layer ==============
-typedef struct SD_workstation *SD_workstation_priv_t;
-SD_workstation_priv_t sg_host_sd(sg_host_t host);
-XBT_PUBLIC(void) sg_host_sd_set(sg_host_t host, SD_workstation_priv_t priv);
-XBT_PUBLIC(void) sg_host_sd_destroy(sg_host_t host);
-
-// ========== Simix layer =============
-typedef struct s_smx_host_priv *smx_host_priv_t;
-XBT_PUBLIC(smx_host_priv_t) sg_host_simix(sg_host_t host);
-XBT_PUBLIC(void) sg_host_simix_set(sg_host_t host, smx_host_priv_t priv);
-XBT_PUBLIC(void) sg_host_simix_destroy(sg_host_t host);
-
-// ========== SURF CPU ============
-DEFINE_EXTERNAL_CLASS(Cpu);
-typedef Cpu *surf_cpu_t;
-typedef Cpu *CpuPtr;
-XBT_PUBLIC(surf_cpu_t) sg_host_surfcpu(sg_host_t host);
-XBT_PUBLIC(void) sg_host_surfcpu_set(sg_host_t host, surf_cpu_t cpu);
-XBT_PUBLIC(void) sg_host_surfcpu_destroy(sg_host_t host);
-
-// ========== RoutingEdge ============
-typedef struct RoutingEdge *RoutingEdgePtr;
-XBT_PUBLIC(RoutingEdgePtr) sg_host_edge(sg_host_t host);
-XBT_PUBLIC(void) sg_host_edge_set(sg_host_t host, RoutingEdgePtr edge);
-XBT_PUBLIC(void) sg_host_edge_destroy(sg_host_t host, int do_callback);
-
-
-// Module initializer. Won't survive the conversion to C++. Hopefully.
-XBT_PUBLIC(void) sg_host_init(void);
-
-SG_END_DECL()
+// ========= storage related functions ============
+/** @brief Return the list of mount point names on an host.
+ * @param host a host
+ * @return a dict containing all mount point on the host (mount_name => sg_storage_t)
+ */
+XBT_PUBLIC xbt_dict_t sg_host_get_mounted_storage_list(sg_host_t host);
+
+/** @brief Return the list of storages attached to an host.
+ * @param host a host
+ * @return a dynar containing all storages (name) attached to the host
+ */
+XBT_PUBLIC xbt_dynar_t sg_host_get_attached_storage_list(const_sg_host_t host);
+
+// =========== user-level functions ===============
+/** @brief Return the speed of the processor (in flop/s), regardless of the current load on the machine. */
+XBT_PUBLIC double sg_host_speed(const_sg_host_t host);
+XBT_PUBLIC double sg_host_get_pstate_speed(const_sg_host_t host, int pstate_index);
+
+XBT_PUBLIC double sg_host_get_available_speed(const_sg_host_t host);
+
+XBT_PUBLIC int sg_host_core_count(const_sg_host_t host);
+
+/** @brief Returns the current computation load (in flops per second).
+ * @param host a host
+ */
+XBT_PUBLIC double sg_host_load(const_sg_host_t host);
+
+/** @brief Return the location on which the current process is running. */
+XBT_PUBLIC sg_host_t sg_host_self();
+
+XBT_PUBLIC const char* sg_host_self_get_name();
+
+/** @brief Return the total count of pstates defined for a host.
+ *
+ * @beginrst
+ * See also :ref:`plugin_host_energy`.
+ * @endrst
+ *
+ * @param host host to test
+ */
+XBT_PUBLIC int sg_host_get_nb_pstates(const_sg_host_t host);
+
+XBT_PUBLIC int sg_host_get_pstate(const_sg_host_t host);
+XBT_PUBLIC void sg_host_set_pstate(sg_host_t host, int pstate);
+
+XBT_PUBLIC void sg_host_turn_on(sg_host_t host);
+XBT_PUBLIC void sg_host_turn_off(sg_host_t host);
+XBT_PUBLIC int sg_host_is_on(const_sg_host_t host);
+
+/** @ingroup m_host_management
+ * @brief Returns a xbt_dict_t consisting of the list of properties assigned to this host
+ *
+ * @param host a host
+ * @return a dict containing the properties
+ */
+XBT_PUBLIC xbt_dict_t sg_host_get_properties(const_sg_host_t host);
+
+/** @ingroup m_host_management
+ * @brief Returns the value of a given host property
+ *
+ * @param host a host
+ * @param name a property name
+ * @return value of a property (or nullptr if property not set)
+ */
+XBT_PUBLIC const char* sg_host_get_property_value(const_sg_host_t host, const char* name);
+
+/** @ingroup m_host_management
+ * @brief Change the value of a given host property
+ *
+ * @param host a host
+ * @param name a property name
+ * @param value what to change the property to
+ */
+XBT_PUBLIC void sg_host_set_property_value(sg_host_t host, const char* name, const char* value);
+
+XBT_PUBLIC void sg_host_route(const_sg_host_t from, const_sg_host_t to, xbt_dynar_t links);
+XBT_PUBLIC double sg_host_route_latency(const_sg_host_t from, const_sg_host_t to);
+XBT_PUBLIC double sg_host_route_bandwidth(const_sg_host_t from, const_sg_host_t to);
+void sg_host_send_to(sg_host_t from, sg_host_t to, double byte_amount);
+
+XBT_PUBLIC void sg_host_dump(const_sg_host_t ws);
+
+XBT_PUBLIC void sg_host_get_actor_list(const_sg_host_t host, xbt_dynar_t whereto);
+SG_END_DECL