Added protected & virtual to core classes for easier inheritance