added abort()