all examples working but far from perfect