moved the core class to its own package