basic requirement: