Use install_method design pattern.