add lots of experimental code