Implementing narrowing

Narrowing types