issue #6: makes sense to never actually construct