implement basic world generation