Profile edit or create (provides backend for #22)