use == not = for numeric equality checks
type hinting to avoid dispatch overheads