added detailed documentations