this is proof of concept and does not function correctly