Updated with new requirements.