Major changes. Code refactored. Waves etc. added