component rewrite hide boiler code also devirtualizing with finsl