virtualize functions