Dårlig implementasjon som fungerer någenlunde, desverre en del bugs...