Switched to a Moose meta implementation for frames, which allows a lot more flexibility, and stronger type checking too.