can work. to slow. need further optimization