finished most features but still have some bugs