Added all features except saving and loading.