refined function types, dropped unnecessary type parameter, mostly correct universes