improve code; add reply;