Added gamestate enum and seperated the functions into public and private traits.'