finish!but still have some problems