fleshed out lots more stuff