Refracted into seperate classes