Improve and add new funcionality.