based on chris coyers thing but heavily updated for kym