done except for bugs. so messy