separate gui, decoding, input modules