this is just a mess right now but committing it so i can keep working on it