requirement check
refactor tests