May be we should use static dispatch?