edit by hhu