Implemented many fixes, NEED TO CHECK TIMER.