let's add typescript support