added interfaces functionality