higher kinded types Fixes reapplied