Sigh maybe a bit of re-working but I'll commit before