improve the readability(in progress)(not compileable)