add document listener