edit by qk