slightly simplified interface