Explaining what's up with three compilation functions