more detailed doc