a simpler core
No need for takeAll. Closes #1
updating output