Now functional, though slow