use first or create to tighten up the creation logic