Better generic programming