#2 split to core and ui modules.