I just cannot figure it out :( did some defactoring though