make School opaque with newtype