Major rewrite of pooling

Probably going to rewrite as component-based shortly