removed self.label calls and moved validation to clean methods