avoid unnecessary cast