complete but validation not perfect