* wrap the transformation/implementation rules in the struct of optimizer * fix unit tests * address comment * minor change, keep the same code style * add default singleton optimizer
* wrap the transformation/implementation rules in the struct of optimizer * fix unit tests * address comment * minor change, keep the same code style * add default singleton optimizer