implemented non-working functionality