Refactored core codebase, split up public and private interafaces