#27 - Refactoring to generify immutables handling