Add destroy() method

Move events listeners to external functions in order to be able to "off"
them.