Implement final program constructors + add program binary type

Tests passing, no leaks