Converted to varargs
Added functional method
Cleaned up code
Added language level