purely virtual method?