some refactoring of how instructions are serialized, added serialization system and program container