This is the first version but with low efficience