adding documentation for implementation