Separate core and UI