added rain effect and many low level function