Few cool features

I haven't tested or looked for errors in an IDE, please check.