better but still not efficient enough