diff --git a/languages/perl6/src/classes/List.pir b/languages/perl6/src/classes/List.pir
index 1d9e566..da87273 100644
--- a/languages/perl6/src/classes/List.pir
+++ b/languages/perl6/src/classes/List.pir
@@ -633,6 +633,63 @@ Checks to see if the specified index or indices have been assigned to.  Returns
 
 =back
 
+=item $!sort()
+
+Inplace sort list by copying into FPA, sorting and copying back.
+
+=cut
+
+.sub '$!sort' :method
+    .param pmc comparer
+    .local pmc elem, arr, comparer
+    .local int len, i
+
+    arr = new 'FixedPMCArray'
+    len = elements self
+    arr = len
+
+    i = 0
+  copy_to:
+    if i == len goto done_to
+    elem = self[i]
+    arr[i] = elem
+    inc i
+    goto copy_to
+
+  done_to:
+
+    arr.'sort'(comparer)
+
+    i = 0
+  copy_from:
+    if i == len goto done_from
+    elem = arr[i]
+    self[i] = elem
+    inc i
+    goto copy_from
+
+  done_from:
+    .return(self)
+.end
+
+=head2 sort() 
+
+Sort list in-place
+
+=cut
+
+.sub 'sort' :method
+    .local pmc comparer
+    .local pmc res
+    
+    get_hll_global comparer, 'infix:leg'
+    res = self.'$!sort'(comparer)
+
+    .return (res)
+.end
+
+
+
 =head1 Functions
 
 =over 4
@@ -668,6 +725,36 @@ Build a List from its arguments.
 .end
 
 
+=item C<sort>
+
+Sort arguments.
+
+=cut
+
+.sub 'sort' :multi(_)
+    .param pmc args :slurpy
+    .local pmc l
+    
+    l = 'list'(args :flat)
+    .return l.'sort'()
+.end
+
+=item C<sort>
+
+Sort arguments using comparition sub.
+
+=cut
+
+.sub 'sort' :multi(_,_)
+    .param pmc comparer
+    .param pmc args :slurpy
+    .local pmc l
+    
+    l = 'list'(args :flat)
+    .return l.'$!sort'(comparer)
+.end
+
+
 =item C<infix:,(...)>
 
 Operator form for building a list from its arguments.
