Reimplement with new API
Refactor spec