standard functionality implementation done

Here's the promised finished standard part.
this pull request doesn't include the bonus part which is about to be done :(

but it should work fine >:)