combined everything into one class