Refactoring free space allocation behavior to a separate (and singleton per the environment) class