#89 start marking code as functional interfaces