a block requires an interface and not another block directly; add comments; ... maybe we should rename interface to 'contract' as interface could be mistaken