Alternative logic proposition

See comments in the code
As you can see here we have functional interface - the pool is not interested how to build the project - we need to supply this information from the outside world.