Rough structure outline ready for... actual code