First working version
Strict, unboxed types