working upsert component generation