still working on adding support for signal handling.