ok finished, there are some bugs