initial commit. works, but the initial load takes a long time