validation is still a bit messed