some refractor done, add ipynb