Updated to be less retarded