singleton assignment via factory