swift kind-of sort-of works, but there are a few rough edges...