took a while
Demo: https://drive.google.com/file/d/1FDK76_fjySPllKhMjantnpJqn84Ic82p/view?usp=sharing