some new functions that solves 2/4, and 3/4 of #1 still have to do 4/4 properly