start of ge abstraction