separate high level and low level methods for groups