#34 Make the whole public API clean: hide all implementation details