some more work done, definitely not complete yet