almost done. neew testing and cleaning