Separate interfaces from implementations