diff --git a/build/shared/lib/keywords.txt b/build/shared/lib/keywords.txt
index a23d8563b..94a45488a 100644
--- a/build/shared/lib/keywords.txt
+++ b/build/shared/lib/keywords.txt
@@ -118,161 +118,141 @@ unHint KEYWORD2
# THE TEXT ABOVE IS HAND-WRITTEN AND FOUND IN THE FILE "keywords_base.txt"
# THE TEXT BELOW IS AUTO-GENERATED
-# OPERATOR1 specifies operators
-# In the reference specify at operator
-
-! logicalNOT
-!= inequality
-% modulo
-&& logicalAND
-( parentheses
-) parentheses
-* multiply
-*/ multilinecomment
-+ add
-++ increment
-+= addassign
-, comma
-- subtract
--- decrement
--= subtractassign
-. dot
-/ divide
-/* multilinecomment
-// comment
-; semicolon
-< lessthan
-<= lessthanorequalto
-> greaterthan
->= greaterthanorequalto
-{ curlybraces
-|| logicalOR
-} curlybraces
-[ arrayaccess
-= assign
-== equality
-] arrayaccess
-
-
-# LITERAL1 specifies constants
-# In the reference specify at constant
-
-HALF_PI LITERAL1 HALF_PI
-PI LITERAL1 PI
-TWO_PI LITERAL1 TWO_PI
-
-
-# LITERAL2 specifies internal variables
-# In the reference specify at system variable
-
-height LITERAL2 height
-pixels LITERAL2 pixels
-key LITERAL2 key
-keyPressed LITERAL2 keyPressed
-mouseX LITERAL2 mouseX
-mouseY LITERAL2 mouseY
-pmouseX LITERAL2 pmouseX
-pmouseY LITERAL2 pmouseY
-width LITERAL2 width
-
-
-# KEYWORD1 specifies datatypes and reserved words
-# In the reference, specify as datatype
-# structure, or keyword
-# or object
-
-PFont KEYWORD1 PFont
-PImage KEYWORD1 PImage
-boolean KEYWORD1 boolean_
-break KEYWORD1 break_
-byte KEYWORD1 byte_
-case KEYWORD1 case_
-char KEYWORD1 char_
-color KEYWORD1 color_
-else KEYWORD1 else
-if KEYWORD1 if_
-float KEYWORD1 float_
-for KEYWORD1 for_
-int KEYWORD1 int_
-new KEYWORD1 new
-while KEYWORD1 while_
-
-
-# KEYWORD2 specifies functions and methods
-# In the reference, specify as function
-# or method
abs KEYWORD2 abs_
-alpha KEYWORD2 PImage_alpha_
++ add
++= addassign
+Array KEYWORD1 Array
+[] arrayaccess
+= assign
atan2 KEYWORD2 atan2_
background KEYWORD2 background_
+beginShape KEYWORD2 beginShape_
bezier KEYWORD2 bezier_
-bezierPoint KEYWORD2 bezierPoint_
-bezierSegments KEYWORD2 bezierSegments_
-bezierTangent KEYWORD2 bezierTangents_
bezierVertex KEYWORD2 bezierVertex_
-blendMode KEYWORD2 blendMode_
+blend KEYWORD2 blend_
blue KEYWORD2 blue_
+boolean KEYWORD1 boolean
box KEYWORD2 box_
brightness KEYWORD2 brightness_
+byte KEYWORD1 byte
+byte KEYWORD2 byte_
ceil KEYWORD2 ceil_
+char KEYWORD1 char
+char KEYWORD2 char_
+color KEYWORD1 color
colorMode KEYWORD2 colorMode_
+color KEYWORD1 color_data
+, comma
+// comment
+constrain KEYWORD2 constrain_
copy KEYWORD2 copy_
cos KEYWORD2 cos_
+{} curlybraces
cursor KEYWORD2 cursor_
curve KEYWORD2 curve_
-curvePoint KEYWORD2 curvePoint_
-curveTangent KEYWORD2 curveTangent_
curveTightness KEYWORD2 curveTightness_
curveVertex KEYWORD2 curveVertex_
day KEYWORD2 day_
+-- decrement
degrees KEYWORD2 degrees_
delay KEYWORD2 delay_
+dist KEYWORD2 dist_
+/ divide
+. dot
ellipse KEYWORD2 ellipse_
ellipseMode KEYWORD2 ellipseMode_
+else KEYWORD1 else
endShape KEYWORD2 endShape_
+endSound KEYWORD2 endSound_
+== equality
fill KEYWORD2 fill_
+float KEYWORD1 float
+float KEYWORD2 float_
floor KEYWORD2 floor_
+for KEYWORD1 for_
framerate KEYWORD2 framerate_
-frequency KEYWORD2 frequency_
get KEYWORD2 get_
+< greaterthan
+<= greaterthanorequalto
green KEYWORD2 green_
+HALF_PI LITERAL1 HALF_PI
+height LITERAL2 height
hour KEYWORD2 hour_
hue KEYWORD2 hue_
+if KEYWORD1 if_
image KEYWORD2 image_
imageMode KEYWORD2 imageMode_
+++ increment
+!= inequality
+int KEYWORD1 int
+int KEYWORD2 int_
+join KEYWORD2 join_
+key LITERAL2 key
+keyCode LITERAL2 keyCode
keyPressed KEYWORD2 keyPressed_
+keyPressed LITERAL2 keyPressed
keyReleased KEYWORD2 keyReleased_
+< lessthan
+<= lessthanorequalto
+light KEYWORD2 light_
lights KEYWORD2 lights_
line KEYWORD2 line_
+link KEYWORD2 link_
loadBytes KEYWORD2 loadBytes_
loadFont KEYWORD2 loadFont_
loadImage KEYWORD2 loadImage_
-loadSound KEYWORD2 loadSound_
-loadStream KEYWORD2 loadStream_
loadStrings KEYWORD2 loadStrings_
+&& logicalAND
+! logicalNOT
+|| logicalOR
+loop KEYWORD3 loop_
max KEYWORD2 max_
millis KEYWORD2 millis_
min KEYWORD2 min_
minute KEYWORD2 minute_
+% modulo
month KEYWORD2 month_
mouseDragged KEYWORD2 mouseDragged_
mouseMoved KEYWORD2 mouseMoved_
mousePressed KEYWORD2 mousePressed_
+mousePressed LITERAL2 mousePressed
mouseReleased KEYWORD2 mouseReleased_
+mouseX LITERAL2 mouseX
+mouseY LITERAL2 mouseY
+/* multilinecomment
+* multiply
+- negation
+netMode KEYWORD2 netMode_
+new KEYWORD1 new
nf KEYWORD2 nf_
-noBackground KEYWORD2 noBackground_
noCursor KEYWORD2 noCursor_
noFill KEYWORD2 noFill_
+noise KEYWORD2 noise_
+noiseDetail KEYWORD2 noiseDetail_
noLights KEYWORD2 noLights_
noSmooth KEYWORD2 noSmooth_
noStroke KEYWORD2 noStroke_
-noTint KEYWORD2 noTint_
-normal KEYWORD2 normal_
+noTint KEYWORD2 noTint_
+Object KEYWORD1 Object
online KEYWORD2 online_
param KEYWORD2 param_
-pause KEYWORD2 pause_
-play KEYWORD2 play_
+() parentheses
+PFont KEYWORD1 PFont
+PI LITERAL1 PI
+PImage KEYWORD1 PImage
+alpha KEYWORD2 PImage_alpha_
+blend KEYWORD2 PImage_blend_
+clone KEYWORD2 PImage_clone_
+copy KEYWORD2 PImage_copy_
+get KEYWORD2 PImage_get_
+height LITERAL2 PImage_height
+pixels LITERAL2 PImage_pixels
+set KEYWORD2 PImage_set_
+width LITERAL2 PImage_width
+pixels LITERAL2 pixels
+pmouseX LITERAL2 pmouseX
+pmouseY LITERAL2 pmouseY
point KEYWORD2 point_
pop KEYWORD2 pop_
pow KEYWORD2 pow_
@@ -285,7 +265,6 @@ random KEYWORD2 random_
rect KEYWORD2 rect_
rectMode KEYWORD2 rectMode_
red KEYWORD2 red_
-repeat KEYWORD2 repeat_
rotate KEYWORD2 rotate_
rotateX KEYWORD2 rotateX_
rotateY KEYWORD2 rotateY_
@@ -296,37 +275,42 @@ saveBytes KEYWORD2 saveBytes_
saveFrame KEYWORD2 saveFrame_
saveStrings KEYWORD2 saveStrings_
scale KEYWORD2 scale_
+screenX KEYWORD2 screenX_
+screenY KEYWORD2 screenY_
+screenZ KEYWORD2 screenZ_
second KEYWORD2 second_
-seek KEYWORD2 seek_
+; semicolon
set KEYWORD2 set_
-setFont KEYWORD2 setFont_
+setup KEYWORD3 setup_
sin KEYWORD2 sin_
size KEYWORD2 size_
smooth KEYWORD2 smooth_
+sort KEYWORD2 sort_
sphere KEYWORD2 sphere_
-split KEYWORD2 split_
+sphereDetail KEYWORD2 sphereDetail_
sq KEYWORD2 sq_
sqrt KEYWORD2 sqrt_
status KEYWORD2 status_
-stop KEYWORD2 stop_
+String KEYWORD1 String
stroke KEYWORD2 stroke_
+strokeMode KEYWORD2 strokeMode_
strokeWeight KEYWORD2 strokeWeight_
+- subtract
+-= subtractassign
tan KEYWORD2 tan_
text KEYWORD2 text_
-texture KEYWORD2 texture_
-textureMode KEYWORD2 textureMode_
+textFont KEYWORD2 textFont_
+textMode KEYWORD2 textMode_
+textSize KEYWORD2 textSize_
+textureVertex KEYWORD2 textureVertex_
tint KEYWORD2 tint_
-transform KEYWORD2 transform_
translate KEYWORD2 translate_
triangle KEYWORD2 triangle_
+TWO_PI LITERAL1 TWO_PI
vertex KEYWORD2 vertex_
-volume KEYWORD2 volume_
+void KEYWORD1 void
+while KEYWORD1 while_
+width LITERAL2 width
+writeBytes KEYWORD2 writeBytes_
+writeStrings KEYWORD2 writeStrings_
year KEYWORD2 year_
-
-
-# KEYWORD3 is the main structural component
-# In the reference, specify as processing function
-
-draw KEYWORD3 draw_
-loop KEYWORD3 loop_
-setup KEYWORD3 setup_
diff --git a/build/shared/lib/keywords_base.txt b/build/shared/lib/keywords_base.txt
new file mode 100755
index 000000000..28dde8366
--- /dev/null
+++ b/build/shared/lib/keywords_base.txt
@@ -0,0 +1,119 @@
+# LITERAL1 specifies constants
+
+ADD LITERAL1
+ALIGN_CENTER LITERAL1
+ALIGN_LEFT LITERAL1
+ALIGN_RIGHT LITERAL1
+ALPHA LITERAL1
+ALT LITERAL1
+ARROW LITERAL1
+BEVELED_JOIN LITERAL1
+CENTER LITERAL1
+CENTER_RADIUS LITERAL1
+CONCAVE_POLYGON LITERAL1
+CONTROL LITERAL1
+CONVEX_POLYGON LITERAL1
+CORNER LITERAL1
+CORNERS LITERAL1
+CROSS LITERAL1
+DARKEST LITERAL1
+DEG_TO_RAD LITERAL1
+DISABLE_TEXT_SMOOTH LITERAL1
+DOWN LITERAL1
+BLEND LITERAL1
+HAND LITERAL1
+HSB LITERAL1
+IMAGE_SPACE LITERAL1
+LEFT LITERAL1
+LIGHTEST LITERAL1
+LINES LITERAL1
+LINE_LOOP LITERAL1
+LINE_STRIP LITERAL1
+MOVE LITERAL1
+NORMAL_SPACE LITERAL1
+OBJECT_SPACE LITERAL1
+POINTS LITERAL1
+POLYGON LITERAL1
+PROJECTED_ENDCAP LITERAL1
+QUADS LITERAL1
+QUAD_STRIP LITERAL1
+QUARTER_PI LITERAL1
+RAD_TO_DEG LITERAL1
+REPLACE LITERAL1
+RGB LITERAL1
+RIGHT LITERAL1
+ROUND_ENDCAP LITERAL1
+ROUND_JOIN LITERAL1
+SCREEN_SPACE LITERAL1
+SHIFT LITERAL1
+SQUARE_ENDCAP LITERAL1
+SUBSTRACT LITERAL1
+TEXT LITERAL1
+THIRD_PI LITERAL1
+TRAINGLES LITERAL1
+TRIANGLE_STRIP LITERAL1
+UP LITERAL1
+WAIT LITERAL1
+false LITERAL1
+null LITERAL1
+super LITERAL1
+this LITERAL1
+true LITERAL1
+
+
+# KEYWORD1 specifies datatypes
+
+Boolean KEYWORD1
+Byte KEYWORD1
+Character KEYWORD1
+Class KEYWORD1
+Double KEYWORD1
+Float KEYWORD1
+Integer KEYWORD1
+Math KEYWORD1
+String KEYWORD1
+StringBuffer KEYWORD1
+Thread KEYWORD1
+abstract KEYWORD1
+catch KEYWORD1
+class KEYWORD1
+continue KEYWORD1
+default KEYWORD1
+do KEYWORD1
+double KEYWORD1
+extends KEYWORD1
+final KEYWORD1
+finally KEYWORD1
+import KEYWORD1
+implements KEYWORD1
+instanceof KEYWORD1
+interface KEYWORD1
+long KEYWORD1
+native KEYWORD1
+package KEYWORD1
+private KEYWORD1
+protected KEYWORD1
+public KEYWORD1
+return KEYWORD1
+short KEYWORD1
+static KEYWORD1
+switch KEYWORD1
+synchronized KEYWORD1
+throw KEYWORD1
+throws KEYWORD1
+transient KEYWORD1
+try KEYWORD1
+void KEYWORD1
+volatile KEYWORD1
+
+
+# KEYWORD2 specifies methods and functions
+
+cache KEYWORD2
+curveSegments KEYWORD2
+hint KEYWORD2
+unHint KEYWORD2
+
+
+# THE TEXT ABOVE IS HAND-WRITTEN AND FOUND IN THE FILE "keywords_base.txt"
+# THE TEXT BELOW IS AUTO-GENERATED