&&=K?a5qhd6{IGNU{Q^8SA|4t#@aK8^%
zjD!v|Q$y1=iGGk_$d;NA#%?>#9aB|a3IH?A3hLb{f8KaubrP|x*woZVz#bp^Z6%X%
z#$H|BMF?aeDh1;=3Yg3U83(*m(gUb
zFlKqG>OHpiAq9kQ$)r~+q}@r^gICz{u3@tQ(T2;^S)uj*xz9@~nokE9OF!1!ub3Hh
zr7^_LUQ3Rk^1q`S
z5gdkAMw8V;a{F0e@P7O@&U
z&0I326WQn6wbazqENpBxHu~dV^Yed8Pgj(Xzy#6L)9ZQd7EDe}4dXEUQg9)yHs&g=
ztL}LRs;B-?_OS;D@`-~h>Ln!GN<&>R#2(9>r%kIFZ$-K96#o)w
z9{6g5{Pw)A?WAvyulao5T0=`qU0;7V&Azptgo-n#rG?(8da0A6?mvy%`QkpD%D45z
zS&&$(YpL9yy_**k=f}^VIfaF0Z;>rB?fP2NS;W}wVD8r)!uwqMEJjCSoZ?x_3#*NA
z8~{qi?CDnESXo)U|488>^4j@T6un3yfi4F?IRzIeB+dH@ouB?P`GbcOq?qPP1i84$
zAY+knnAS0m1E{A(d(PF6Is=f$_y^64e^>1Tj0k^3S{&BhoJ~7P_O1u*UKjFOtv@fE
zQ8J&*9QnPnR=?=H^AH2q9J@=ALl8{Oeb1OGwAMXq=CzKrs^G<Z6dMUNCt7Y6kDpIDOXw>~T@qTc7hzQ__rS8O`G9o=QT2Ebtn3c)^GnC*9>awlBanjZB=0%4k)B
zKD&NiJ&$)#77I7_rMsRwYIz3$34*MTed7yo%Xmmc1G|C#^^2s6`o%cg+~)%i;4v4w
zZ;6hn-tM=Hg)Uc^`w5?V&!Mv}w#2{jsh2N%
z3lpAX65s=dhXoRv%D@z)Sch0=A^Bp1QtO(Ftqi^Fh{-0L^YS<2?plV_dM@5z({>&k
zPx0e{gqLC6N6Va8hr3ggCtgoo^$@-*OM7>$9~t(_x2~j}GvY8U-^e=9@!=U}2I63P
z6uo_OEQ~It>VdqBDe*f=7eZdf(3kI^p}Eo^Jxznd^jjt-UU>m}6`kM|jK-|+u_Dtr
zz8$!(t}gB*F+0_plE$Iqj*7NLp~jY4=mSSqGprH70^jhS>6}w@*%N2t^nsmm2N{Ca
zR49gb>sWLV6ZRjw6Ux3q%o_5L9akMA^z7B~eEj^OQ#4>d9}izV=wsXIEI#WG+8My2
z@79MTI&uxCZpQdYO6tM$JYRZH^UE$9_s%Q`yS8BBIgaXMEs$bO2~b;5y|xwstiq*_
zSg~3$=<+ZNzWag2EpX_GG^|$i6^z~*PJgB(DCq-mxHguyrV7?2mN*~nN);mMOKz8l
zh!&T|NWrM*=j(sP+&WjY?WI}?{!Zw8&1B$bXF$qqG`Vgm){dmp@DH>39(~}PxKN7q
znpLh|dVWjhVsRcKiEmi{LRD
zzkRR2%?Pn!Sjll_j0ZOan_*2md5eKq4030q5*N-ecEbHE{_t>EUo(&XXq#Fvm*RSl
z0-Q8p=JY0FyDKM1YA_^leO`C*ud~7YuI$V60xH5Dcr&k9AhZlkxeG~q@r{^v!^#iv
zMo8QYc7uUo5N0th8gt^FLF}KfATSKkt|rRj9s~ZKq5|b>9_U98BK?p`CsVO5_=_xJ
zcn_+NR*s~>?Cisos2h3_qv=<*mngFg;O+C6_*>1*O)l$)XBUTjFkorKKp*@1kiuOV
z_QweqBFGR3N+TD(C%_26e_5*Ez(*Ot-=?RDospvM_b#uY=yJZAYIqyjv|H(4miPX_
z1j5>Wm&Dn;n65myHd5_M5lXN5LZ0EQ%*<
zw`_@fXnHpABE@EXhPUi+;g=`tU1DTy>)E%NqTZcib~~KZqN(@tWSa`n?cEV?xEyn<
zkS+|DzY^WZ*f5DkNJ62Xs|)FU8pVCD6lUUh?eWpjGWXM@w#(}bNVGKAxZ1ASwk+e<
z(pz;V9LhhMu|-jbWY13`{Bn3PGv}Q+VUmn2n1`{gvYJ!Lt=ZpU0v*}c`o~02Hn(Qh
zV9hp|z5^?Kn3gM!87k)vX&R#4Q4$AsD1>XQhDw6%tN9QiX<{aK`NI!}h)Av=D_h%5
z0zmiD-S|(ug&mB<9AMatlhuF#
zKomYEiH(WzfSg?4lVVN@mE(Uy6U#*C?Bu*YCJrHmk(fQf{3op!@qe3>`;R&OZ`|J}
zzdPF+I3@tt|Br_DAu;p*TIG5_H@CNWz2FugfLxbXR>sM$shLV&o}VB1sb1s(AD3l&
z_3FDo&iz{T9EP!|)xyGO&dBC;#W`s3V`&YX^pt#yD)R~q;bFJ#aI(pnnY3qmhK8g0
z^6?-GOH1SP{W)Sjo$z1)oq}{~bl|Sj^aIaHUd->6_;t*!%VIj5dvJmn`748
zcep&{ovZ4NlC~;EnZ^Y3NK<}pXWTi(lZXF}QIhEBx#z%5QA5#FJp}m3!H{eBy)G8n
zy*OC~1%j`5?L}F&@yS0(vV>i~bazWVqNO#ll6&2JvFvTEyC~=FpZS1B$SHq)Hx@9(
z3-GN8W2DUdQ&K!G=PgB97g5v1IGfI)-lkE4>vl=5FV2VUT+FuQEIgG`c*^u&L(h?k
z-Xg5E!F4_Il9lDxfc4}mqP6@w!FKPoXQq5r!7!M!^&!ModK`iad%Q}5gYg{U<@u6V
zJt%f+*=nW(o_M3EOQ1DRni0uEjlgH%DRQ!E%k%=k$cf&
zRHn(OS&AZ+F8acS#2f$TdoXW$s-`2euT!g*yoWJ#<|>a?BC
z?XU)cJ$mqmhwKBB&+;5yQgN;CV+&6(E!1gRD5pA@^?6J$QhB1*T`}vg5BWa68xU;u
z>ww)H9&g{3=dnmizby32YHG&jK2J4n1nnB21S$>ah$+~sNlVC7paL1i-(T=zDgzW0
zkW!l5|H(}x{4sYg)J*R-(5?~)6P`SKcDh@1;DfYm(ishxc&|hu@n2ei=;w3FjhWGn
zpQ1xEq^fRyhhD|f34H^Qv~V$uZDN=T;17Ptc03L|3&P&UJ-MW}l`yB3h%2|0aIA+{
zyw{BV^WZ8=)b9xdc}CC-7_`FlqbYSVvF&*^1A|o|;XmZHfHSEDevaQ9o5jcu%S#(A
zc#0q}FuyfD@IeL6tQQkxkU2EYSU;*T?roSgY1KbDoNxvFAL#PrgZ-?JiB~DcTMZl=
zzP59>B?s9k>W%;{8RwOR@#f#Mc?}II0LT}7fRd;`p?MUFAz}WgT`oj0#8sE>$4xK_
zV&nV#Qi?z-)ert{9jbR+zpUhjr-^tx_+9vx
zaBHaFQJD*~m)`<;!523JR(^Bb{$g~=y<&V|&*v@qi6WT#NAX@xZl`Lr99uYmKI8(_
zUa^I{{Fqap;Eev^EuPQEC;d7@4u~@m)KB45u;}*0#D_95bo~JXDvDk7z-|{>l7A6X
zk_oGbeRG7&G@E@pJMxu4JkYq%JX#F>QM2cO{F&fiVi*y}6j?~$_arS3WHUZ)Oa|zM
z2A?AO++E8((t|hQB^_VxsS``_po`kG7Y0{1k&4SXjxI5{+M909bRAaBo((HYsZpcb
zc>`L~3|?^CXn(8#PzQ}?+{3A=(BfiMO}$#16r8Uqa~H9OWWv0*vy~mS^lEHccjy#D
zPF{ZZmjRI31Jd(?wv3n&Tf1pFQGk_>^J4P1i?VZx5Z2eJey$FC!$t^hL|`38m$Tji
zu?&2P6}-o~`iWbem02A1*O2j${XvDpFY$MF~<%Z3-Y^58!uoLB#c3!Ps-t@lQMgw}-O+&zMj&8?(q(Js&yV8A*_*C)>1
z4kpgejmht2j{I|H?e0#=jKQE*Max6()f|;c&dq(2E)-D<&{(VvRV+7JAq>2(h~K|?
z4yKM7rJ&BrH1{=ER4jgFA$It8};^yV>QFWz!v4n4xo{GSo#RR=p{ygb@{jtXX}oIu3htqOj*UtU5hHNg)Mq0}mCn_+eEc0l?AQ*m
zR&u7w*R_0LJEb#Ws_X8O{<#~^cSZ?lLtb7NneEFs73@lMEDQY%!z=jrAZ6fwLjz5?
z`mGQM#>0q{-Fhep(>>grPcm@wL0@>a)N=CfQ3U^^zxes{X8;9Y$~n)rafh$?`1p`-
zUpK7z8D$bms3!3pO-)p0xbU^8(#pmqCgQx+d`FpguH8%jIxiEx4)9iWe*}-yCmSF|
zVm8SP?KI};9RNhT!|?gHU1%>Ks~f(CCc(x4!R^UD**nZx3&
zVzP9=H90JvmmJ8I8n!Jv-;LZ-44+9BUX3w8BciFJH?DDLoWl~i=PgSvWU0Q)KL
z?99s|8}nL4?qpIx*)LBvHYSa%4PvYRgB^)X6i)FD4<3C0n%Y%u8>MQzUm9tv%3Z`1
zg;!6ZaG#mp>U`4Wy45cvvd&E3ouLxa-7sev8x#e!j#O
zLHOi2hK=-1^Hcw1kOVJNlT|ik(0|;%LuiAKK+Ch>z{JGF_sE>3()i?LIayg;7FppW
z;!2rz+!tW(;Su@a^2zCG%=gYK{+5BVF?4_>eFKjs2kppge6LM-nMu>tB5;#^W+ehD
zUN06d5P8hGAuR)5{
z0Q6X#dk~$cfSm8r$*e9Q;|$~#Ci-Kc&~2PH?j)ju*+C;NV@uZq_nk;-wHF4mY{9W2
z0X0PWh;=1knDaQ)MECSF7+GCPS<&i6%D|?=1CYI?ogJ`xgJNQcc^Ma%mzTTLaAJNf
z0pLbLK|x`*8E|0}Uz0uvB@qK)V{Q7z=dFOa$?QA8LntXJIZl9`Ht+zE$XlkBAGHZs
z0_k|XP>)}JC@&R*+Hy~)6M5wk;h*N1P9nZ+iEym$2N<{#NytRJ(NxMGsj8H2INIp*
z79dtb`ToB}X||DHzdK38PKM0oznBB@T#{cM
zz@k~M>m`+D&aY@-@9_hvlg+H3vifXnzFC$AepjZlje({BO#c0+Q8xVpF{9YNhd}im
z&0;5Za(z&SJei~~@9y!hs;bi8rP{4+<#Nd77JGTZ)sguXr4&vnOQcP@retiK<2Ei$
z^~?9#ja%G!jOAayb_)5|=lvh`a%2eII3j)<4>jFdn+V*MnA0Z*tI~f&^@~LM`%o&@
zS;bn0k@G(QX~`n<
z9!2+`(HF*{ZnB==64OeOTBfQ9x_qv4e->moMwknY1DP9a-G~AIBzE03PvQFDRyD%$
z=}1a$Lvhkj7S+vvo^w5{U*U)fYT5S8E2AR#m0BSn6kz0>M*mmhyU%;WiVR-MZ-1U=
zjMe)ge9i`5uy~qv3nvVFV_Xim=-S!`EgK>e7&g4O>-Yu;!aJD8}W%(I;;{pVt&V7f?kMq}9Q#
zTNolzP2itvh*p_I`pUG+h`IkE_j6v917D)PW|kK{W}b?yCG+Lp>{LMBD7M|4dBl_N
zf1~)cvVXFERo$X5;(g;G>st6q&UgS5HQe_yk#oB+&2Ej;ym--NLdp27%uFa9ent*f
z@LMzQg3F>1lIs9S1!$Jl}q(F102@Pgp2cfpt4%7hRCsKPj-KJ3Oz~7H2nbi^wCCP`xhEdU9P$Q5v
zp`xTp*o4XB6-zSBUWmP9zcKHlmYHcpmWX>f&RBD$4urmi`fz&4a2K;=K&HrJQT-H$aLEyb`i&gu0eT{BJE)b#0F?#JZ(
z4g)@e0|TAR2lgWwk#TNZLsY`foyyg#e;v_EEG61acKY3(_WYRH*1S!F7sTMFcTUqi5T{9qmn^hPCqO+XggO4cd9|^N3)H
zXgM-&_PU!q7u*duc_$vVL@6f93DRE|WmO|36*?g8ziZeVgdOus+-%c)dNC^`p8wF$
z5ChC_5>5swE8j4z=-=v&Ajf)tK%=6wT?t^IY)-tlXIiPlEUlA8Xodo@dS_>+#lNKN
z?Cd_Xvwfo0(++K2$1Uln}cspz_}BjD#}lA=$z0W9t4wYyIM(~PoGd=jN+2l$cc>1i1W2?>Eb
z-oiN=e|{j9kfQLUP%-7xw5aPI1%RjWTMpE(9~t+2YF#cfc%ky)k#iI@uRD3g1({P`
z9updhv$wZ5WXZjaxHZQ-|R4AO&<;{HaORO
z{)X^t-?0oYjj8l&@0m_>P)<1tC88bL79-8cIZg?rN*
zQ)gr|``d1vG11p`{9^8V@s%g5rG|^A?uEBAEOd&(Ba`d$qKQw0^4gx_FQY1C1<_q5
z%|NCwd@~50pQL=eHLkYjCz?>07!;+jZ;&bI`JFrOnMf|t@fjMKOrXxV_TCnksxT&8
zd%B?a95cE*pH18h_qj5MPCt0giGC8;I~$=7W`x{u
z+XH&m?j87-m*rex@!xP5FkM_+98Nd-4PfcQt^=>qQd5D{>*W^4l9YbF*Nd2-M!YCB
z(%{)}b_3$Oz1B~#$pQ$Lkouln3akK}H-_(wM=^*B+jv=9zXUek)}?LTlG&hqHjp{n
z+2INUqb73}E12-Q5@!i#!)Q((_^;f&PkIhp@(kn3onOu!%FlnIJ2ca`F0)XQ17J#g
z@@MJ%ySU<{`;VVt9j2Z|YJ4EPxz&=||6*m5(;|v2SNhZ%$khFA=qOl3-vWS_RawzD
zZF$qeAoTSbI{fN>AStivMWA5D^UKu>6Xdo09ZEn3{VP9_La8YOSfaz=zcJbWV}U{X
zA-3_D^Y$XFnm{Ic?YKYwX8(%njc;_*(y~Py>ngT5_2i<^h48@w`RL~FGnupA>#}`Y
zWOB;7*u?rJIT4zg=h-VjQ;QdrIX8f3h!{RTC9w?P*`|kytA4^IXtBOWHb8qnyhFh
z=H2JdBxj-b$J-KHEo!f*qGw)iOO>9{BCtSaRQtbCL(Z_Wx>RJ6zMD?Buzm9h4k%U(
z`QrdNK>y_@cvOJ%Q^rBS0q6(G0@|QiFSI#>42E3`8*lI0dwO00@$}qA3cQvo
ztrCTQ^l}|%UO)g#Q&}Byy3uFfD(VG)4gz1#jpF!ju)vkv+}!HgLPQX)DCQKeM?KDEo7X{wB4fxfRioj?ruSTQBvrxeU{+(e_)Ya(*Zy5
zs^vlfkzy*c*QZ2>Kr;TWoxskBqTvk%qz1`Z?#rHG{qd~4o~NI`Kn2Z++s;Nrj1j$2
zG+lsrgeBFZO^6eo9&HD=kD4r{Q67>k6I8pBO%+$y5WbdZWqb=eoURTY7+E1Q4#%
z+pn|4`a#}8W9R&jZqF|o41~h=h6QBPFWSl59=#7juF*m-as1k{YGBjS>45BFRH(SE
z(3r@N8CGGb-Blb>LN{f9yhK7IH3?isyW2%$_C~Gi8NqRgZNA0P^N5i>MjZ%*WBv>-mSy<
zv*6J5;0Q|@E)5-U5NL08Kw^JxA){hL6D&EmNy;qo9vbhPS6ldY+pJH}Xq;NeMloiJiyo;r=BhC09EvE#3hLw!U&9qjh
z_M6PIXE$QU7-Kk3;A*}9q%iS~vom0m?BQZO>_fJi3pyqtFC6ICR-p+9E
z9GZLQ>Wat~F#Otk;?=yJ51hoBuMlZQr$RzJn
zE+qfcvC98asH_O80%=cV`BP+u-iw!My}Y&7Z{XAZTO_WiiPT2ncd;WFO!lY5gp&NjR6~}N)4zSLoc!QdOw?VJuRLsS_gtJwu3^<_9T1Ib^+FEx1Q6AZ32*sE2
znqwlXJ$6-Ia^Ntzc3`Sey#m24PyV8n<WPHJZ%fj_HS-+Nc7KWWDyk&>yJRKX-Itw
znAlNIn4ybub9oFruMMj`D|67!=+rq8PmoUo2x40L{0f+Ap+BMfYawI7Fp14Ul+H&m
z!mx7ZQ5W%!ZXVnE#MuH@t}SytprY&|h6QF?^T{)s~WN_IOfx_W8`^FF4($
zp>on1+uKdKK$*e$Z5t~yjnSKky37Rd>!^+6KO7hP*H||g^@;C2%be9Zq6nP@mnvkj
zZ{d1wMTL#z7$o=00iF0ENCw+X#;|q7leRT)o3Aj)p{
zh{P3xAo`CkBq#_ex>|@4*u)AdxiUDW8K&eV28i5-5Rt+1lAvdx=UDblW6;heQXJDVV{sQb1K37Hue^
z%9&S1=gq~uT%W?3xFaA9WsAlWTrw;ydZs2xNgwMUtp}UsSU*|Y{90Q>Ph8Ux)&9r`
zt?cVDyitUqEqX--=!;WaXPh~Qhlg{)QE--%XuO7Lw3A+qJIdqO?f^=|YxWv8UG^DR
zW?+CH5=b@wSrk=+{pun$0kE2R1gZeA+K=;t(d542I04qmUeLat>u}=dbZ4h-Sly
zwu+pe_#6t?JV53X7S;MnApA#APb5|3E$Ivu4i)8N=YtZLz)FoE;{jLKEfT{eon>S}d(=*rUp}$&}E`3^CUkY_Ye2x}C6euX9>eH3eGT7_8
zD{T4~;2JXhke1GVSCBW^5%>g>0phmphCW9)2c?jPB%Z@6dl^m4s9*AJ
z%pOPn#9R3KhSu~f(b3V5+JV#L$-L&u8c*AY1)w%f_yq+87^HaEioCVNGn13Eg{EO~
zUuXz|Qh?vxMy*+cqOSMTsue}!*Sjk|B7$qg88($9}
za&NBE=jznYSA`S@D`?&yitacXXIUAsY|$Udx_sWJGoxpg=9iCG&*>||&8*FWDYjH8
zQy!XgTd-9DD%Gzm*G08W-Xw75qZI0n?spnJwZh^*wDTTt%K3k`j!!8zEc%S+-p756
z@(kBFZk)PzYVVmdGfo02hLAV4t<~=?DK9+IJfA1z+LCM*ncjVKfqRxRZtf~w{r0Va
z!6kl%^KrXdZ{OE>VV1MjIH1Z)9^65B9lq{I=#|p~Ee9R0u)Wbd%_}XxwQzCehR~li
zJ-7DmF0MJo6D=jK$;38erlIkgEtibG`rP)}v0SDg|5w?i`5YDh{`~Blwc+6Qe;XJc
z*Uc%tkyquV3LTm}!Wjq(2H`;I4b!688q&XBKbr}h-c?aocRo>Yws3aeF%Q9l_~}3W
z+z*s3m#j+O;Cdjes;l9xN)Xqf1*;!^`xfgcvBu@ELfdkk@cyRYpbueTMMWQh`vc>A
zfYlCzUs`Hw@9l%X?SI%F>}_Yf8xjBS-R**hHTV99I`yZXzG9qv`TwJ8^NgAI&PnI%
z*MHC5mh*e<^S|+`Um|Xu1g4ZXFK%2pfmJ#nCaVPz{w_@>nMuVg$?r+xKIoH{;bbjQBN
z#3LIYx!5Nx-E(^JF~-vy_^-HrliJXjxZ-(yG3)z%6${QA-4bcpBkWf&c?Iu|X#Eb4
zh$^=g-C{fEHE%x6z`n}fI9cuR!@!gayb-5a{Uu$rwEL`+5BLFF{X0CbXmUJ05F~DS
zT|#}ujo)3X`RSy7e0qA=Ct4?602#aD>+t>XI8SfNdFA87mzx^w4OlXhG
y+$MpRhaF24Sj;8Afx0t?5?qPfi~Z<7qrb_agh(s(bHFo{7(8A5T-G@yGywp{C)6?k
diff --git a/modular_skyrat/master_files/code/_globalvars/maint_loot_uncommon.dm b/modular_skyrat/master_files/code/_globalvars/maint_loot_uncommon.dm
index 409796cb0a3..a753484293a 100644
--- a/modular_skyrat/master_files/code/_globalvars/maint_loot_uncommon.dm
+++ b/modular_skyrat/master_files/code/_globalvars/maint_loot_uncommon.dm
@@ -30,28 +30,14 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
/obj/item/clothing/head/collectable/tophat = 1,
/obj/item/clothing/head/collectable/welding = 1,
/obj/item/clothing/head/collectable/wizard = 1,
- /obj/item/clothing/head/collectable/xenom = 1
+ /obj/item/clothing/head/collectable/xenom = 1,
) = 50,
list( //Cartridges
- /obj/item/computer_hardware/hard_drive/role/atmos = 100,
- /obj/item/computer_hardware/hard_drive/role/captain = 5,
- /obj/item/computer_hardware/hard_drive/role/ce = 5,
- /obj/item/computer_hardware/hard_drive/role/chemistry = 50,
- /obj/item/computer_hardware/hard_drive/role/cmo = 5,
- /obj/item/computer_hardware/hard_drive/role/detective = 50,
- /obj/item/computer_hardware/hard_drive/role/engineering = 50,
- /obj/item/computer_hardware/hard_drive/role/head = 5,
- /obj/item/computer_hardware/hard_drive/role/hop = 5,
- /obj/item/computer_hardware/hard_drive/role/hos = 5,
- /obj/item/computer_hardware/hard_drive/role/lawyer = 50,
- /obj/item/computer_hardware/hard_drive/role/medical = 50,
- /obj/item/computer_hardware/hard_drive/role/quartermaster = 5,
- /obj/item/computer_hardware/hard_drive/role/rd = 5,
- /obj/item/computer_hardware/hard_drive/role/roboticist = 50,
- /obj/item/computer_hardware/hard_drive/role/security = 50,
- /obj/item/computer_hardware/hard_drive/role/signal = 100,
- /obj/item/computer_hardware/hard_drive/role/virus/clown = 5,
- /obj/item/computer_hardware/hard_drive/role/virus/mime = 5
+ /obj/item/computer_hardware/hard_drive/portable/command/captain = 1,
+ /obj/item/computer_hardware/hard_drive/portable/command/cmo = 1,
+ /obj/item/computer_hardware/hard_drive/portable/command/rd = 1,
+ /obj/item/computer_hardware/hard_drive/portable/command/ce = 1,
+ /obj/item/computer_hardware/hard_drive/portable/command/hos = 1,
) = 50,
list( //Bot assemblies
/obj/item/bot_assembly/cleanbot = 1,
diff --git a/modular_skyrat/modules/contractor/code/datums/contractor_tablet.dm b/modular_skyrat/modules/contractor/code/datums/contractor_tablet.dm
index d65d959c3ef..80b098a781e 100644
--- a/modular_skyrat/modules/contractor/code/datums/contractor_tablet.dm
+++ b/modular_skyrat/modules/contractor/code/datums/contractor_tablet.dm
@@ -29,7 +29,7 @@
return
var/mob/living/user = usr
- var/obj/item/computer_hardware/hard_drive/small/syndicate/hard_drive = computer.all_components[MC_HDD]
+ var/obj/item/computer_hardware/hard_drive/portable/syndicate/hard_drive = computer.all_components[MC_HDD]
switch(action)
if("PRG_contract-accept")
@@ -127,7 +127,7 @@
/datum/computer_file/program/contract_uplink/ui_data(mob/user)
var/list/data = list()
- var/obj/item/computer_hardware/hard_drive/small/syndicate/hard_drive = computer.all_components[MC_HDD]
+ var/obj/item/computer_hardware/hard_drive/portable/syndicate/hard_drive = computer.all_components[MC_HDD]
var/screen_to_be = null
data["first_load"] = first_load
diff --git a/modular_skyrat/modules/contractor/code/items/tablet.dm b/modular_skyrat/modules/contractor/code/items/tablet.dm
index 644b72ff26a..4d90263cf74 100644
--- a/modular_skyrat/modules/contractor/code/items/tablet.dm
+++ b/modular_skyrat/modules/contractor/code/items/tablet.dm
@@ -1,6 +1,6 @@
/obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink/Initialize(mapload)
. = ..()
- var/obj/item/computer_hardware/hard_drive/small/syndicate/hard_drive = new
+ var/obj/item/computer_hardware/hard_drive/portable/syndicate/hard_drive = new
var/datum/computer_file/program/contract_uplink/uplink = new
active_program = uplink
diff --git a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm
index b8eb9d4cf9e..0b59e179efa 100644
--- a/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm
+++ b/modular_skyrat/modules/nanotrasen_rep/code/nanotrasen_consultant.dm
@@ -113,7 +113,7 @@
/obj/item/modular_computer/tablet/pda/nanotrasen_consultant
name = "nanotrasen consultant's PDA"
- default_disk = /obj/item/computer_hardware/hard_drive/role/captain
+ loaded_cartridge = /obj/item/computer_hardware/hard_drive/portable/command/captain
inserted_item = /obj/item/pen/fountain/captain
greyscale_colors = "#017941#0060b8"
@@ -147,7 +147,7 @@
new /obj/item/pet_carrier(src)
new /obj/item/clothing/shoes/sneakers/brown(src)
new /obj/item/clothing/suit/armor/vest(src)
- new /obj/item/computer_hardware/hard_drive/role/captain(src)
+ new /obj/item/computer_hardware/hard_drive/portable/command/captain(src)
new /obj/item/radio/headset/heads/nanotrasen_consultant/alt(src)
new /obj/item/radio/headset/heads/nanotrasen_consultant(src)
new /obj/item/clothing/glasses/sunglasses/gar/giga(src)
diff --git a/tgstation.dme b/tgstation.dme
index 819b39fc189..304ac980246 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3682,7 +3682,7 @@
#include "code\modules\modular_computers\file_system\programs\robocontrol.dm"
#include "code\modules\modular_computers\file_system\programs\robotact.dm"
#include "code\modules\modular_computers\file_system\programs\secureye.dm"
-#include "code\modules\modular_computers\file_system\programs\signaler.dm"
+#include "code\modules\modular_computers\file_system\programs\signalcommander.dm"
#include "code\modules\modular_computers\file_system\programs\skill_tracker.dm"
#include "code\modules\modular_computers\file_system\programs\sm_monitor.dm"
#include "code\modules\modular_computers\file_system\programs\statusdisplay.dm"
@@ -3696,10 +3696,10 @@
#include "code\modules\modular_computers\hardware\CPU.dm"
#include "code\modules\modular_computers\hardware\hard_drive.dm"
#include "code\modules\modular_computers\hardware\identifier.dm"
-#include "code\modules\modular_computers\hardware\job_disk.dm"
#include "code\modules\modular_computers\hardware\network_card.dm"
#include "code\modules\modular_computers\hardware\portable_disk.dm"
#include "code\modules\modular_computers\hardware\printer.dm"
+#include "code\modules\modular_computers\hardware\program_disks.dm"
#include "code\modules\modular_computers\hardware\recharger.dm"
#include "code\modules\modular_computers\hardware\sensor_package.dm"
#include "code\modules\modular_computers\hardware\virus_disk.dm"
diff --git a/tgui/packages/tgui/interfaces/NtosMain.js b/tgui/packages/tgui/interfaces/NtosMain.js
index 8374dd6ee4f..14135e8c125 100644
--- a/tgui/packages/tgui/interfaces/NtosMain.js
+++ b/tgui/packages/tgui/interfaces/NtosMain.js
@@ -1,5 +1,5 @@
import { useBackend } from '../backend';
-import { Button, ColorBox, Section, Table } from '../components';
+import { Button, ColorBox, Stack, Section, Table } from '../components';
import { NtosWindow } from '../layouts';
export const NtosMain = (props, context) => {
@@ -29,21 +29,37 @@ export const NtosMain = (props, context) => {
width={400}
height={500}>
- {!!has_light && (
+ {Boolean(has_light || removable_media.length) && (
-
-
+
+ {!!has_light && (
+
+
+
+
+ )}
+ {removable_media.map(device => (
+
+
+ ))}
+
)}
{!!(cardholder && show_imprint) && (
@@ -78,25 +94,6 @@ export const NtosMain = (props, context) => {
)}
- {!!removable_media.length && (
-
-
- {removable_media.map(device => (
-
-
-
-
- ))}
-
-
- )}
{!!pai && (
@@ -169,9 +166,9 @@ export const NtosMain = (props, context) => {
buttons={(