More less final, still need to cache stuff to prevent fails