FINAL, everything should work. just ugly