defeatbeta-api decisions: why the code looks like this