added implementation of Option