some mistakes fixxed