add implementation documentation