add protected to applicable functions