Task model

Here's this awesome pull request