add preAll method