gso and supporting functions added