First attempt, a tad verbose yet.