See details in the documentation