If start is out of range, should return nil