adding some details.
adding unit tests