Add some OOP to cookbook package
Make metadata a separate package again
Add metadata.Filename