Added optional
Added Initial tests