Fixed and cleaned the code a bit