Separated interface and implementation