add output
make platform independent
make platform independent
make platform independent
make more memory efficient
new function