Trying to remember, how to make it in scala. Bad for now.
Base methods implemented