a lot of algorithm knowledge