few algorithms implemented for learning