Added protected and virtual to all remaining classes