Separate infrastructure from model