more documentation, and forget function