cleaned up for real programing