first try, was a lot harder than expected