this should be private also