use array_replace to avoid options array being reindexed numerically on merge