Added color support and a bit of optimization, still WIP