Reorganize code into packages. 

Add notification interface (It's pretty!)