some polishment, add example