some more testing and cleaning up implementations