requirements and basic usage