adding some basic more abstract functions