At the moment BSNContracts can both be nil and also have the contracts not set. This introduces the possibility of human mistakes and might lead to errors. In general, we need to tighten the BSNContracts sturcture to ensure that all contracts are always set within it and if not, we have a simple way of checking that they're not. See comment here #165 (comment)