Move out all into seperate classes