implement PUM functionality