more refactor, add experimental mainboard logic