Finished Changes for AdvanceProgram
can cause casting error