modified with some more detail