Separated interface from implementation (added header files)