updated gitignore and add executable
implement observer pattern