impl classes now only have package visibility