Use Document instead of Image

Semantically makes more sense
Refactor attachment to use less meta-programming