some errors but better