Third blog post: frame assembly