Added Optional class
deprecate unsupported Optional methods
futher refactor