refactor to save an instance for each monitor created; add destroy method to clean up things