chore: convert to coffeescript