moved implementation classes to private package