added strict and warnings and ignores them where appropriate