added virtual methods