moved options to left
changed addListeners back to addListenerOnces to stop them from multiplying
added integration testing