Structured the project files
Added tests
Fixed removeListener method