added more detailed documentation