add detailed comments