[NB] Refactor and OOPify