base implementation
input validation
README