diff --git a/prosperon/controller.cm b/prosperon/controller.cm
index 33e7ebb4..7bcec6ab 100644
--- a/prosperon/controller.cm
+++ b/prosperon/controller.cm
@@ -1,5 +1,4 @@
var input = use('input')
-var util = use('util')
var downkeys = {};
diff --git a/prosperon/main.ce b/prosperon/main.ce
index 8d99e402..b07ee356 100644
--- a/prosperon/main.ce
+++ b/prosperon/main.ce
@@ -100,8 +100,6 @@ var graphics
var gameactor
-
-
var last = os.now()
// FPS tracking
diff --git a/scripts/base.cm b/scripts/base.cm
index 3e829cb7..d33424c6 100644
--- a/scripts/base.cm
+++ b/scripts/base.cm
@@ -393,1269 +393,3 @@ of itself to the end. For example, [1,2,3] -> [1,2,3,2,1]. If the array has leng
:return: A new "mirrored" array.
`;
-
-
-
-/// doc for builtin string
-(String.prototype.at)[cell.DOC] = `Return the character (or surrogate pair) at the specified index, with support
-for negative indices (counting from the end). If the index is out of range,
-returns undefined.
-
-:param index: The position of the character to return (can be negative).
-:return: A string of length 1 representing the character, or undefined if out of range.
-`;
-
-(String.prototype.charCodeAt)[cell.DOC] = `Return a number indicating the UTF-16 code unit value at the given index.
-If the index is out of range, returns NaN.
-
-:param index: An integer between 0 and string length - 1.
-:return: An integer in the range [0, 65535] or NaN if out of range.
-`;
-
-(String.prototype.charAt)[cell.DOC] = `Return a string consisting of the single UTF-16 code unit at the given index.
-If the index is out of range, returns an empty string.
-
-:param index: The zero-based index of the desired character.
-:return: The single-character string at the specified index, or '' if out of range.
-`;
-
-(String.prototype.concat)[cell.DOC] = `Concatenate the provided string arguments to the current string and return a
-new string.
-
-:param stringN: One or more strings to concatenate.
-:return: A new string formed by joining the caller with the provided arguments.
-`;
-
-(String.prototype.codePointAt)[cell.DOC] = `Return a non-negative integer that is the Unicode code point value at the
-given position. Supports code points above 0xFFFF. Returns undefined if index
-is out of range.
-
-:param position: The index in the string (can be surrogate pairs).
-:return: The code point value, or undefined if out of range.
-`;
-
-(String.prototype.isWellFormed)[cell.DOC] = `Return a boolean indicating whether the string is valid Unicode.
-If it contains unpaired surrogate code points, return false.
-
-:return: True if the string is well-formed UTF-16, otherwise false.
-`;
-
-(String.prototype.toWellFormed)[cell.DOC] = `Return a new string in which any unpaired surrogate code points have been
-replaced by the Unicode replacement character U+FFFD.
-
-:return: A well-formed UTF-16 version of the string.
-`;
-
-(String.prototype.indexOf)[cell.DOC] = `Return the zero-based index of the first occurrence of 'searchValue' in the
-string, starting at 'fromIndex'. If not found, return -1.
-
-:param searchValue: The substring to search for.
-:param fromIndex: The index at which to begin searching (default 0).
-:return: The index of the first match, or -1 if not found.
-`;
-
-(String.prototype.lastIndexOf)[cell.DOC] = `Return the zero-based index of the last occurrence of 'searchValue' in the
-string, searching backwards from 'fromIndex'. If not found, return -1.
-
-:param searchValue: The substring to search for.
-:param fromIndex: The index at which to begin the backward search (defaults to string length - 1).
-:return: The index of the last match, or -1 if not found.
-`;
-
-(String.prototype.includes)[cell.DOC] = `Return a boolean indicating whether 'searchString' appears within this string.
-An optional position can be provided to start searching.
-
-:param searchString: The substring to search for.
-:param position: The position from which to begin searching (default 0).
-:return: True if the substring is found, otherwise false.
-`;
-
-(String.prototype.endsWith)[cell.DOC] = `Return a boolean indicating whether the string ends with 'searchString'.
-An optional 'length' can be provided to treat the string as if it were only
-that long.
-
-:param searchString: The substring to search for at the end.
-:param length: An optional length to truncate the string before testing.
-:return: True if the string ends with 'searchString', otherwise false.
-`;
-
-(String.prototype.startsWith)[cell.DOC] = `Return a boolean indicating whether the string begins with 'searchString'.
-An optional position can be provided to start checking at that index.
-
-:param searchString: The substring to search for at the start.
-:param position: The index in the string to start searching (default 0).
-:return: True if the string starts with 'searchString', otherwise false.
-`;
-
-(String.prototype.match)[cell.DOC] = `Use a regular expression to match the string. If 'regexp' is not a RegExp, it
-is converted to one. Return an array of matches or null if none found.
-
-:param regexp: The pattern to match (RegExp or string).
-:return: An array of matches or null.
-`;
-
-(String.prototype.matchAll)[cell.DOC] = `Return an iterator of all RegExp match objects found within the string.
-If 'regexp' is not a global or sticky RegExp, a TypeError is thrown.
-
-:param regexp: The global/sticky RegExp to match over this string.
-:return: An iterator of match arrays.
-`;
-
-(String.prototype.search)[cell.DOC] = `Use a regular expression to search for a match within the string. Return the
-index of the first match, or -1 if no match is found.
-
-:param regexp: A RegExp or string. If a string, it is converted to RegExp.
-:return: The index of the first match, or -1 if not found.
-`;
-
-(String.prototype.split)[cell.DOC] = `Split the string into an array of substrings using 'separator' (RegExp or
-string). An optional 'limit' can be provided to limit the number of splits.
-
-:param separator: A string or RegExp used to divide the string.
-:param limit: Maximum number of splits to include in the result array.
-:return: An array of the split substrings.
-`;
-
-(String.prototype.substring)[cell.DOC] = `Return the substring between 'start' and 'end'. Indices outside the range
-are clamped. If 'end' < 'start', they swap.
-
-:param start: The starting index (0-based).
-:param end: The ending index (exclusive).
-:return: The extracted substring.
-`;
-
-(String.prototype.substr)[cell.DOC] = `Return the substring from 'start' for 'length' characters. Negative 'start'
-counts from the end. This method is deprecated but still supported in many
-engines.
-
-:param start: The starting index.
-:param length: The number of characters to extract.
-:return: The extracted substring.
-`;
-
-(String.prototype.slice)[cell.DOC] = `Extract a section of the string from 'start' up to (but not including) 'end',
-and return it as a new string. Supports negative indices.
-
-:param start: The starting index. Negative values count from the end.
-:param end: The ending index (exclusive). Negative values count from the end.
-:return: The extracted slice.
-`;
-
-(String.prototype.repeat)[cell.DOC] = `Construct and return a new string which contains the specified number of copies
-of the calling string, concatenated together.
-
-:param count: The number of times to repeat the string (must be >= 0).
-:return: A new repeated string.
-`;
-
-(String.prototype.replace)[cell.DOC] = `Return a new string where the first match (or all matches if 'searchValue'
-is a global RegExp) of 'searchValue' is replaced by 'replaceValue'.
-If 'searchValue' is a string, only the first occurrence is replaced.
-
-:param searchValue: A string or RegExp to match.
-:param replaceValue: The replacement string or function.
-:return: A new string with the matched substring(s) replaced.
-`;
-
-(String.prototype.replaceAll)[cell.DOC] = `Return a new string where all (non-overlapping) occurrences of 'searchValue'
-are replaced by 'replaceValue'. If 'searchValue' is a string, each exact match
-is replaced.
-
-:param searchValue: A string or RegExp with the 'g' flag.
-:param replaceValue: The replacement string or function.
-:return: A new string with all matches replaced.
-`;
-
-(String.prototype.padEnd)[cell.DOC] = `Pad the string from the end with the given 'padString' so its length reaches
-'maxLength'. The result is a new string.
-
-:param maxLength: The desired length of the resulting string.
-:param padString: The string to pad with (default ' ').
-:return: A new string padded at the end.
-`;
-
-(String.prototype.padStart)[cell.DOC] = `Pad the string from the start with the given 'padString' so its length reaches
-'maxLength'. The result is a new string.
-
-:param maxLength: The desired length of the resulting string.
-:param padString: The string to pad with (default ' ').
-:return: A new string padded at the start.
-`;
-
-(String.prototype.trim)[cell.DOC] = `Return a new string with whitespace trimmed from the start and end of this
-string.
-
-:return: The trimmed string.
-`;
-
-(String.prototype.trimEnd)[cell.DOC] = `Return a new string with trailing whitespace removed. Alias: trimRight().
-
-:return: The string without trailing whitespace.
-`;
-
-(String.prototype.trimRight)[cell.DOC] = `Alias for trimEnd(). Remove trailing whitespace from the string.
-
-:return: The string without trailing whitespace.
-`;
-
-(String.prototype.trimStart)[cell.DOC] = `Return a new string with leading whitespace removed. Alias: trimLeft().
-
-:return: The string without leading whitespace.
-`;
-
-(String.prototype.trimLeft)[cell.DOC] = `Alias for trimStart(). Remove leading whitespace from the string.
-
-:return: The string without leading whitespace.
-`;
-
-(String.prototype.toString)[cell.DOC] = `Return a string representing the specified object (itself). Usually called
-implicitly. Overrides Object.prototype.toString.
-
-:return: The string itself.
-`;
-
-(String.prototype.valueOf)[cell.DOC] = `Return the primitive string value of this String object.
-
-:return: The primitive string value.
-`;
-
-(String.prototype.__quote)[cell.DOC] = `(Non-standard) Return a quoted representation of the string, typically for
-debug or serialization. Implementation details may vary.
-
-:return: A quoted version of the string.
-`;
-
-(String.prototype.toLowerCase)[cell.DOC] = `Return a new string with all alphabetic characters converted to lowercase.
-
-:return: The lowercase version of this string.
-`;
-
-(String.prototype.toUpperCase)[cell.DOC] = `Return a new string with all alphabetic characters converted to uppercase.
-
-:return: The uppercase version of this string.
-`;
-
-(String.prototype.toLocaleLowerCase)[cell.DOC] = `Return a locale-aware lowercase version of this string, using the host's
-current locale or the specified locale if supported.
-
-:return: The locale-sensitive lowercase string.
-`;
-
-(String.prototype.toLocaleUpperCase)[cell.DOC] = `Return a locale-aware uppercase version of this string, using the host's
-current locale or the specified locale if supported.
-
-:return: The locale-sensitive uppercase string.
-`;
-
-(String.prototype.anchor)[cell.DOC] = `Return a string representing an HTML element with a 'name' attribute
-set to the current string.
-
-:param name: The name attribute for the anchor.
-:return: An HTML ... string.
-`;
-
-(String.prototype.big)[cell.DOC] = `Return a string representing an HTML element containing the current
-string.
-
-:return: An HTML ... string.
-`;
-
-(String.prototype.blink)[cell.DOC] = `Return a string representing an HTML