support non-boolean types