added tests and a utility folder to clean things up a bit