Frame deserves its own file