added static and virtual methods