filters are somewhat rarely used so moving them later in the argument list
refactor Levels to be singletons