rough but added tests