Low quality code,just for learn.