add requirement implementations