improved option type