separate core class