return self instead of false if prerequisite aren't met