Finished except some bugs