more helper functions
fully abstracted version created according to documentation