adding subroutines and fixing :push opcode