many type mistakes, but doesnt compile