Updated article with source and demo