changed this mess to what could be called a list