returns a constructor fn instead of just an object