Splitting the implementation