this proof is harder than it looks... will continute implementing before attempting more proving