Rewrite option object from scratch with singleton pattern