BCodeICodeCommon through composition rather than inheritance