First working draft. Missing some styling and extra features.