success, should clean up code bloat if time allows but otherwise finished