implement tasks. fixes #18