added pretty much everything