weird errors and overly complicated