seg fault fix(final)