some more detailed documentation