refactor all methods and functions to use classes

:cow: