ignoring the scratch ipynb used for understanding code