add some useful functionality, needs to proof