Btw, why is this all private instead of protected?