no need for static cast