better exception message, and retain filter class