Upated with proper comments