frontend redone with javascript. backend not included yet.