Working version with utilities separated into factories