drop wrong implementation idea, and put better function
update