Working but really messy