the singleton isn't really necessary, just experimenting