a few days of work, can't compile yet