can find all the logic in this project