add guidelines; and remove detail implementations