Yet another refactor of frames, this time to preserve inline functions and
better seperate the functionality of a frame from the data of a frame.
Frame is now an abstract.