generic pool