program in alpha version. needs cleanup