General framework