level is now a class, not a struct