functional program w/ combat class separated