Working demo. Needs refactoring. #3