First full working version using Source only. Need testing.