everything works might be bugs but oh well