dont merge, tests not done but wanted to share