class SignedDataValidator {

  public boolean validateProposal(final SignedData<ProposalPayload> msg) {

    if (proposal.isPresent()) {
      return handleSubsequentProposal(proposal.get(), msg);
    }

    if (!validateProposalSignedDataPayload(msg)) {
      return false;
    }

    proposal = Optional.of(msg);
    return true;
  }

  public  SignedDataValidator(
      final Collection<Address> validators,
      final Address expectedProposer,
      final ConsensusRoundIdentifier roundIdentifier);

}