can go forward or backward, slightly buggy