For learning purposes a small project.