Optional type on abstraction